pub struct SimulatedIceProposal<'a> { /* private fields */ }Expand description
An ICE proposal that has run IceProposal::simulate and
is ready for the operator signing + commit workflow.
Carries the simulator’s BlastRadius output so the
Deck-the-binary UI can render the preview before the
operator approves; Self::commit hashes the
BlastRadius and signs the envelope with the operator key.
Every operator participating in the multi-signature
workflow must sign over the same
(action, issued_at_ms, blast_hash) triple — fetch via
Self::action / Self::issued_at_ms /
Self::blast_hash.
Implementations§
Source§impl<'a> SimulatedIceProposal<'a>
impl<'a> SimulatedIceProposal<'a>
Sourcepub fn blast_radius(&self) -> &BlastRadius
pub fn blast_radius(&self) -> &BlastRadius
Borrow the simulator’s pre-execution preview.
Sourcepub fn action(&self) -> &IceActionProposal
pub fn action(&self) -> &IceActionProposal
Borrow the underlying IceActionProposal.
Sourcepub fn issued_at_ms(&self) -> u64
pub fn issued_at_ms(&self) -> u64
Milliseconds-since-UNIX_EPOCH stamp pinned at the
original IceProposal’s construction; signatures
must cover this exact value.
Sourcepub fn blast_hash(&self) -> BlastRadiusHash
pub fn blast_hash(&self) -> BlastRadiusHash
Blake3 digest of the simulator’s BlastRadius.
Signatures must cover this hash; the substrate verifier
rebuilds the same payload and rejects bundles whose
signatures don’t bind to it.
Sourcepub async fn commit(
self,
signatures: &[OperatorSignature],
) -> Result<ChainCommit, IceError>
pub async fn commit( self, signatures: &[OperatorSignature], ) -> Result<ChainCommit, IceError>
Commit the proposal. Verifies
signatures.len() >= ice_signature_threshold before
publishing; returns
Err(IceError::insufficient_signatures) otherwise.
Substrate-side multi-operator-signature verification
rebuilds the same domain-tagged signing envelope —
including the blast-radius hash — and rejects any
bundle whose signatures don’t cover the exact
(action, issued_at_ms, blast_hash) triple.