Skip to content
zsfelfoldi edited this page May 8, 2015 · 2 revisions

RPA format descriptors for Ethereum blocks

An RPA (Recursive Promise of Availability) consists of a reference hash and a format descriptor. Format descriptors select a routine (in the simplest case from a pre-defined set embedded into the PreimageRegistry contract) that tell the contract what other RPAs can be assumed from the already presented preimage of the reference hash. This is done by parsing the specific binary format and returning further pairs of reference hashes and format descriptors. If the preimage of an RPA was requested and also presented, the children can also be requested (the same way as if the signer of the root RPA would also have signed the child RPA), but do not get into a "requested" status automatically.

For ensuring the availability of Ethereum blocks the following RPA types are defined: (name of field field as specified in the yellow paper, then RPA type of reference)

  • Binary

(no references, single non-recursive PA)

  • Trie(leafType)

subTrie Trie(leafType)

leaf leafType

(if leaf data is <=32 bytes, it is not stored as a reference but then it also won't contain further recursive references)

  • BlockHeader

parentHash PrevBlockHeader

transactionsRoot Trie(Transaction)

receiptsRoot Trie(TxReceipt)

  • PrevBlockHeader

stateRoot State

  • State == Trie(Account)

  • Transaction == Binary

  • TxReceipt

Rσ State

  • Account

storageRoot Trie(Binary)

codeHash Binary

Clone this wiki locally