27 lines
2.1 KiB
Markdown
27 lines
2.1 KiB
Markdown
|
# Consensus object pools
|
||
|
|
||
|
This folder holds the various consensus object pools needed for a blockchain client.
|
||
|
|
||
|
Object in those pools have passed the "gossip validation" filter according
|
||
|
to specs:
|
||
|
- blocks: https://github.com/ethereum/eth2.0-specs/blob/v1.0.1/specs/phase0/p2p-interface.md#beacon_block
|
||
|
- aggregate attestations: https://github.com/ethereum/eth2.0-specs/blob/v1.0.1/specs/phase0/p2p-interface.md#beacon_aggregate_and_proof
|
||
|
- unaggregate attestation: https://github.com/ethereum/eth2.0-specs/blob/v1.0.1/specs/phase0/p2p-interface.md#beacon_attestation_subnet_id
|
||
|
- voluntary exits https://github.com/ethereum/eth2.0-specs/blob/v1.0.1/specs/phase0/p2p-interface.md#voluntary_exit
|
||
|
- Attester slashings https://github.com/ethereum/eth2.0-specs/blob/v1.0.1/specs/phase0/p2p-interface.md#attester_slashing
|
||
|
- Proposer slashins https://github.com/ethereum/eth2.0-specs/blob/v1.0.1/specs/phase0/p2p-interface.md#proposer_slashing
|
||
|
|
||
|
After "gossip validation" the consensus objects can be rebroadcasted as they are optimistically good, however for internal processing further verification is needed.
|
||
|
For blocks, this means verifying state transition and all contained cryptographic signatures (instead of just the proposer signature).
|
||
|
For other consensus objects, it is possible that gossip validation is a superset of consensus verification (TODO).
|
||
|
|
||
|
The pools presenet in this folder are:
|
||
|
- block_pools:
|
||
|
- block_quarantine: for seemingly valid blocks that are on a fork unknown to us.
|
||
|
- block_clearance: to verify (state_transition + cryptography) candidate blocks.
|
||
|
- blockchain_dag: an in-memory direct-acyclic graph of fully validated and verified blockchain candidates with the tail being the last finalized epoch. A block in the DAG MUST be in the fork choice and a block in the fork choice MUST be in the DAG (except for orphans following finalization). On finalization non-empty epoch blocks are stored in the beacon_chain_db.
|
||
|
- attestation_pool:
|
||
|
Handles the attestation received from gossip and collect them for fork choice.
|
||
|
- exit_pool:
|
||
|
Handle voluntary exits and forced exits (attester slashings and proposer slashings)
|