diff --git a/README.md b/README.md index f86e5c767..5baf34ef5 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,66 @@ Our aim is to infuse these strengths into the Ethereum consensus client ecosyste We also have for objective to bootstart an Ethereum Elixir community, and to make Elixir a first-class citizen in the Ethereum ecosystem. +## Roadmap + +**1. Block Subscription - Mid September** + - Libp2p discovery and block retrieval + - SSZ + snappy + - `on_block` callback: Save the latest block in fork-choice store, conduct basic checks. GetHead returns the last obtained block. + - Beacon API: Return block root (`GET /beacon/states/{state_id}/root`) + +**2. Checkpoint Sync - October** + - Libp2p primitives for sync + - Support checkpoint Sync from a known provider + - Sync from the latest finalized block + - BeaconAPI: Return headers for head block + - EngineAPI: Validate incoming blocks + +**3. Attestations - Mid October** + - Libp2p attestation retrieval + - Basic beacon state representation + - Store attestations (last message sent by each validator) + - `on_attestation` callback for attestations sent via Gossip + - Process attestations from blocks + - Beacon API: Return head block root (`GET /beacon/states/head/root`) + +**4. Deposits - November** + - BLS signature checks + - Update consensus state view of deposit contract (`process_eth1_data`) + - Process deposit operation to update validator list (`process_deposit`) + - Verify block signatures (`verify_block_signature`) + +**5. Slots and Fork-choice - Mid November** + - `on_tick`/`process_slot` in state transition; a GenServer that calls this periodically + - `on_block`: Add slot-related checks and epoch calculations (excluding finalization) + - Get-head uses the messages + - Block header validation + - EngineAPI: Process execution payload + - BeaconAPI: Ensure getting head values point to the heaviest + +**6. Finality and Slashing - Mid November** + - Epoch processing + - `on_block`: Prune fork-choice store; reject blocks before finalization + - Add RANDAO mix to the beacon state + - BeaconAPI: Retrieve finality checkpoints, randao mixes + - Process attester slashings and proposer slashings + - EngineAPI: fork-choice updates + +**7. Rewards, Shuffling - December** + - Process rewards `on_epoch` for a checkpoint + - Handle Deposits and Withdrawals + - Implement RANDAO + - Calculate committee for a given state + - Conduct shuffling + - Integrate with Grafana + - BeaconAPI: Retrieve randao mix for a given block + +**8. Validator Features - Mid December/January 2024** + - Create attestations + - Monitor for slashings + - Create slashing proofs + - BeaconAPI: Post blocks, slashings, voluntary exits, and withdrawals + ## Contributor Package Dream of becoming an Ethereum core developer? Eager to shape the protocol that will underpin tomorrow's world? Want to collaborate with a passionate team, learn, grow, and be a pivotal part of the Ethereum Elixir community?