pub enum EngineError {
Show 14 variants
UnsupportedTopic(String),
LookupServiceNotFound(String),
NodeNotFound,
LookupFailed(String),
InvalidQuery(String),
StorageError(String),
BroadcastError(String),
SpvError(String),
BeefParseError(String),
ScriptVerificationFailed {
subject_txid: String,
input_index: u32,
reason: String,
},
ScriptWalkInconclusive {
at_txid: String,
subject_judged: bool,
reason: String,
},
ScriptWalkOverBudget {
at_txid: String,
subject_judged: bool,
limb: DoorLimb,
what: String,
},
WalkCouldNotRun(WalkCouldNotRun),
Other(String),
}Variants§
UnsupportedTopic(String)
LookupServiceNotFound(String)
NodeNotFound
GASP: /requestForeignGASPNode asked for a graph/txid we don’t
have locally. Matches mainline’s 400-class “not found” response.
LookupFailed(String)
InvalidQuery(String)
The CALLER’s query was malformed — a bad identity key, a gameId that is
not 32 bytes of hex, a missing required field. Distinct from
LookupFailed, which means WE failed: without the distinction every
caller mistake was reported as a server fault (HTTP 500), so a malformed
query and a genuine outage were indistinguishable in logs and alerts on
an unauthenticated endpoint anyone can hit.
StorageError(String)
BroadcastError(String)
SpvError(String)
BeefParseError(String)
ScriptVerificationFailed
A spend in the submitted BEEF does not satisfy its source output’s
locking script: the input’s unlocking script was EXECUTED (reference
parity, 2026-09-08) and the interpreter refused it. Distinct from
EngineError::SpvError (a bad or unverifiable PROOF, a missing
source, a chain-tracker fault) so an operator can tell a bad spend from
a bad proof. input_index is the failing input’s position in the
transaction whose script failed (the subject, or an unproven
ancestor of it in the same BEEF); reason is the interpreter’s own
message.
ScriptWalkInconclusive
The DOOR walk (Engine::verify_scripts_only) hit a STRUCTURAL fault
before reaching a verdict on at_txid (a source the BEEF lacks, a
parse fault, the value rule): not the interpreter’s verdict, so not a
refusal for a caller whose bar is the network. subject_judged says
whether the subject’s own inputs had all executed before the fault
(an ancestor faulted) or not (the subject itself is unjudged).
ScriptWalkOverBudget
The DOOR walk exceeded its own bound (DoorBudget: the static work
estimate, the interpreter’s memory limit tripping, or the estimate of
the door’s own memory; limb says which): the door’s verdict, never
the network’s — the request proceeds to the network.
WalkCouldNotRun(WalkCouldNotRun)
The submit’s own script walk COULD NOT RUN within the engine’s
DoorBudget (bsv-low #592) and nothing on record stands in for it
(WalkBreachPolicy::NotNow, every door but the queue replay of a
gated submission; the E592 lens fold, H1). NOT NOW: nothing was
judged, nothing written, and it is NOT a refusal either: the budget
says nothing about the transaction. The way out is the subject
PROVEN: a proven transaction is not walked, so an honest body too
big to walk unmined lands once its block is mined (a client retries
after the block, not at once).
Other(String)
Trait Implementations§
Source§impl Debug for EngineError
impl Debug for EngineError
Source§impl Display for EngineError
impl Display for EngineError
Source§impl Error for EngineError
impl Error for EngineError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()