## Week 18 and Week 19 Updates:
### Progress on ePBS Implementation:
In the past two weeks, we've had two significant breakout meetings (#11 and #12) focusing on ePBS (Enshrined Proposer-Builder Separation). The main highlights include rethinking fork choice rules and client implementation updates.
#### Client Progress:
**Prysm**
- First to implement the new fork choice rules
- Main challenges we're facing:
- Need to modify core functions that decide which blocks to follow. `GetHead()`: Decides which block is the head of the chain. `Insert()`: Adds new blocks to the chain
- The tricky part is making sure old blocks work the same way while adding support for new ePBS blocks
- We're aiming to launch a test network in about two weeks
**Other Clients**
- Lighthouse: Currently reviewing our approach to fork choice
- Teku: Working on making their blocks compatible with new rules
### New Design Approach:
Francesco proposed a simpler way to handle ePBS:
**Before:**
- We give builders special power to influence fork choice (chain selection)
- Had complex boost systems for when payloads were withheld
- Multiple timers and boosts made things complicated
**New Approach:**
- Remove special builder powers
- Make payment processing wait until blocks are finalized
- Add specific time windows:
- 5 seconds to reveal data
- 10 seconds freeze period
- Makes the system simpler but needs precise timing
### Updated Roles in the Protocol:
#### Builder's Role:
```go
// Before
BuilderRole {
submit_payload_immediately: true
get_paid_immediately: true
}
// After
BuilderRole {
submit_payload: "within 5 seconds"
payment: "after finalization"
}
```
#### Proposer's Role:
- Still creates blocks but with stricter timing rules
- Gets final say in certain voting situations
#### Attesters and Committee Members:
- Mostly unchanged
- Simpler voting rules
### Focus for next 2 weeks
Code Changes Needed:
```go
// Need to modify how we handle payloads
type PayloadEnvelope {
- remove_withheld_fields
+ add_new_timing_fields
}
// Need to track votes in the beacon state
type BeaconState {
+ add_vote_tracking
+ add_payment_tracking
}
```
### Implementation Plan:
- Launch test network
- Test basic functionality, Make sure multiple clients work together
- Add new vote tracking, Implement delayed payments
- Update fork choice rules, Add safety checks
- Prepare for mainnet
Immediate Tasks:
- Finish fork choice implementation
- Test with other clients
- Document new behaviors
- Prepare for test network launch