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

Requirements for Portal usage in EL client for history data expiry (EIP-4444) #308

Open
kdeme opened this issue May 23, 2024 · 3 comments
Open

Comments

@kdeme
Copy link
Collaborator

kdeme commented May 23, 2024

Write up of the different parts that an EL client will have to either implement or use from a Portal library or Portal node when using the Portal Network as alternative for history chain data (EIP-4444).

Current status

Potentially in the future

If #287 and #291 get merged and thus chosen as solution for validation of block headers as part of the chain post merge, then for the second PR, an additional requirement is added for validation of these block headers:

When using the Portal Network for this, this translates to the requirements:

However, an EL/CL combo does have directly access to this, but afaik the EL itself does not. One could for example decide to define an extra engine_api call (or other json-rpc namespace) to push this data to the EL.

Or specifically for the second item, implement the libp2p version of the consensus light client (which I believe some EL clients have).

@acolytec3
Copy link
Contributor

Is fluffy written as a module capable of being bolted on to the nimbus el client? That's what I'm doing in my proof of concept work with the EthereumJS client and ultralight and it seems to work reasonably well so far.

@kdeme
Copy link
Collaborator Author

kdeme commented May 24, 2024

Is fluffy written as a module capable of being bolted on to the nimbus el client?

Yes, that's the idea. We have an issue open on this (status-im/nimbus-eth1#2147).
I'm first still adding a higher level API though to make it easier to instantiate all the moving parts.

it seems to work reasonably well so far.

Yes, I think thanks to the Portal architecture, libraries/clients will naturally lean into having a modularity that allows for this.
I think one thing to be wary of in the future is when a certain Portal sub-network requires data that potentially can be gathered from another Portal sub-network, to provide an interface for this instead of directly accessing that sub-network.

@GrapeBaBa
Copy link

We have encountered such a problem. Although go-ethereum and erigon are both EL developed by Go, and the codes of their p2p packages are basically the same, due to the dependency issues of GO language and the early implementation of p2p, they were not considered to be provided to other projects as dependency libraries. At present, we can only fork one of their projects to develop shisui, and the other project can only be referenced by copying.
A better way may be to extract the p2p package into a public project as a basic dependency library, and similar public packages such as jsonrpc may also be included. However, this may require the EL teams to promote it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants