State Proof - Algorand Specifications

Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Algorand Specifications

The state proof is a special transaction used to disseminate and store State Proofs.

A state proof transaction additionally has the following fields:

FIELD CODEC TYPE REQUIRED
State Proof Type sptype uint64 Yes
State Proof sp struct Yes
Message spmsg struct Yes
State Proof Last Round sprnd uint64 Yes

The state proof type identifies the type of the State Proof.

Currently, always 00.

The state proof structure as defined in the State Proof specification.

The message is a structure that composes the State Proof message, whose hash is being attested to by the State Proof.

The message structure is defined in the State Proof message section.

In order for a state proof transaction to be valid, the following conditions MUST be met:

In addition, the verifier should also be given a trusted commitment to the participant array and ProvenWeight value. The trusted data SHOULD be taken from the Ledger at the relevant round.

To encourage the formation of shorter State Proof, the rule for validity of state proof transactions is dependent on the first valid round in the transaction.

In particular, the signed weight of a State Proof MUST be:

Where ProvenWeight=TotalWeight×fSP2

When a state proof transaction is applied to the state, the next expected State Proof round for that type of State Proof is incremented by δSP.

A node should be able to verify a state proof transaction at any time, even if the transaction first valid round is greater than the next expected State Proof round in the block header.

TODO