Errors from the stake module distinct from StakeStatus. These
surface programmer-visible failures (malformed input, RPC
errors); StakeStatus::Unverified(_) already covers
“couldn’t talk to the chain” so verify_stake itself never
returns these for the network path.
Async surface for fetching Bitcoin chain data. Production wires
this to two independent Esplora endpoints and requires
agreement; tests pass a hand-rolled mock that returns canned
values.
Build the canonical bytes a provider signs to prove control of
the staked UTXO. Deterministic across runs and platforms — any
reorder of fields breaks the signature.
Validate an Esplora endpoint URL before we make a request to it.
The stake-verification flow involves issuing HTTP requests to
operator-supplied URLs; without this, an attacker could point
the verifier at internal services (SSRF).