Hey there, I am Manav Darji and these are my updates for week 12 (02/10 - 08/10). The goal of this week was to continue on the geth PR and try to complete the block verification engine API.
Updates
- Geth PoC
- Completed the implementation of the last engine API
engine_newPayloadVePBS
which does the block verification before it's imported. It does the following things.
- Takes a new block payload as input along with an inclusion list which it satisfies, the parent hash it's built upon and an exclusion list.
- Inclusion list as mentioned in the specs is list of (address, gasLimit) pairs which the block needs to include on top.
- Exclusion list is nothing but a list of index of transactions of parent block which represents the transactions in current inclusion list and can be removed from verification
- This needs to be done because when the inclusion list is proposed, the current block payload isn't revealed. Hence there can be inclusion of some of the transactions which inclusion list was referring to in the current block's payload intentionally or un-intentionally.
- This verification happens before the block goes for the state transition
- The scope of verification assumes the block won't be verified if wrong lists (inclusion and exclusion both) are constructed. This is also proven in the consensus specs.
- The function verifies if the block has transactions which satisfies the inclusion list voted upon in the previous block.
- It returns appropriate errors if not.
Next steps
- Test the above implementation
- I found that the engine API specs (in execution-specs repo) are a bit outdated and can be a bit verbose given the things I've implemented. Moreover, at some places it doesn't follow the same structure as defined in previous specs. I plan to update that in the coming weeks.
Back