-
Notifications
You must be signed in to change notification settings - Fork 7
RPA types
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