Serving Engine API data from the Portal Network: The Plan
This research has a lot of ramifications, and I expect to adjust my course as I dive deeper into it. This makes it hard to define a stable roadmap, but I think I'll have to follow these steps:
- Stage 1: Get Blocks
- Understand how MEV infrastructure and other forms of PBS send blocks to validators. (I'll focus on Flashbots' MEV-Boost.)
- Research how can a Portal Client receive blocks from that infrastructure, and code a prototype allowing Trin to do so.
- Stage 2: Engine API
- Research how to serve the Engine API data using the blocks received in the previous stage.
- Research what Engine API endpoints are necessary for proposing blocks.
- Prototype the relevant Engine API endpoints on Trin.
- Stage 3: Testing
- Research what testing infrastructure is relevant for my prototype. (e.g. Portal hive, Glados, testnets, etc.)
- Implement all relevant tests.
- Stage 4: Bonus
Allowing validators to propose empty blocks is my main goal. But there are other things I want to do if I have enough time / after the EPF:
- Research how to execute transactions from a portal client using Reth modules (to enable attestations).
- Implement the remaining Engine API endpoints in Trin.
- Research how to serve Beacon API data from a Portal client + CL client setup.
- Research how to switch to non-empty blocks.
I aim to complete steps one to three in weeks eight to sixteen of the EPF. I expect to spend the same amount of time on each step, so, three weeks each.