Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add roadmap to readme #252

Merged
merged 3 commits into from
Oct 5, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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?
Expand Down
Loading