With the History Network close to something looking like fully implemented, the build out of support for both era and era1 files within our various monorepos, and the existence of similar efforts status-im/nimbus-eth1#2910, it's time we also think through what would be a useful implementation of an Ultralight EL client.
Things we could do
- Implement full forward sync from chainstart (kind of boring and already done by Trin Execution)
- Implement an EL client that uses checkpoint sync to quickly sync to the head of the chain
This is interesting in that it allows for an "execution" client to quickly sync to the head of the chain without depending on the Beacon Chain (at least not directly as long as the Beacon Network bridges are operational)
- A personalized EL client that takes something like the above checkpoint sync client plus a mobile app that stays in sync via UnifiedPush to provide a personalized EL experience that lets a user specify a wallet address and monitor it over time. Is this actually that interesting to anybody other than decentralization maxis since it only applies to mainnet?
What else?
Options 1 and 2 should be relatively straightforward to implement. Just pick a sync strategy (forward sync/checkpoint sync) and then start fetching blocks monotonically or in batches. The structure of a client should be really simple, basically just an @ethereumjs/vm with a portalnetwork module in back pulling in the blocks for execution. There's probably more here since the vm expects a blockchain and other niceties that we'd have to account for but this should still probably be step one.
I'm not sure what else to put here but want to get this conversation started.
With the History Network close to something looking like fully implemented, the build out of support for both era and era1 files within our various monorepos, and the existence of similar efforts status-im/nimbus-eth1#2910, it's time we also think through what would be a useful implementation of an Ultralight EL client.
Things we could do
This is interesting in that it allows for an "execution" client to quickly sync to the head of the chain without depending on the Beacon Chain (at least not directly as long as the Beacon Network bridges are operational)
What else?
Options 1 and 2 should be relatively straightforward to implement. Just pick a sync strategy (forward sync/checkpoint sync) and then start fetching blocks monotonically or in batches. The structure of a client should be really simple, basically just an @ethereumjs/vm with a portalnetwork module in back pulling in the blocks for execution. There's probably more here since the vm expects a blockchain and other niceties that we'd have to account for but this should still probably be step one.
I'm not sure what else to put here but want to get this conversation started.