Skip to main content

Resolver

Trait Resolver 

Source
pub trait Resolver {
    // Required methods
    fn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>;
    fn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>;
    fn evaluate(&self, cell: &Cell, asof: &str) -> Option<Scalar>;
}
Expand description

What step 7 of SPEC 10.1 obtains: the descriptor, the input receipts and the evaluated value. This crate evaluates no functions and fetches nothing; the caller supplies a resolver, and verify asks it only for what step 7 reaches for the receipt at hand:

  • descriptor once, for cell.fn_hash (7.1);
  • receipt once per hash in inputs, in order, stopping at the first input that fails (7.5);
  • evaluate once, only after 7.1-7.5 pass (7.6).

Nothing is asked when steps 1-6 fail, and nothing about receipts below the inputs. The descriptor and receipts are JSON text, so that 7.1 hashes the descriptor before checking it and 7.5 reports an unparseable input as E_INPUT_INVALID, as the specification orders.

Required Methods§

Source

fn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>

The descriptor JSON text offered for fn_hash, or None if unavailable (E_FN_UNAVAILABLE).

Source

fn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>

The receipt JSON text offered for receipt hash hash, or None if unavailable (E_INPUT_UNAVAILABLE).

Source

fn evaluate(&self, cell: &Cell, asof: &str) -> Option<Scalar>

The value of evaluating cell as of asof (for stored: the value looked up as of it, SPEC 10.1 step 7.6), or None if this resolver cannot evaluate it: no runtime for the language, a budget exceeded, inputs the evaluator cannot obtain (E_EVAL_UNAVAILABLE, see VerifyResult). asof is the receipt’s asof.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§