-
Notifications
You must be signed in to change notification settings - Fork 247
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
Improve snowbridge pallet and relayer upstram #1395
Comments
Hey @ParthDesai, I just wanted to discuss with you about your aims and timeline here, to improve collaboration. We are busy refactoring our light client, see for example these PRs:
So I wouldn't advise forking off our light client right now, as you'll end up with obsolete code. We are still have more refactoring to do, and we estimate this will take another few weeks. For example:
|
Thank you @vgeddes for the update. We did fork the light client earlier and combined both Meanwhile, let me know if you need my help in improving the light client. |
I think besides all the refactoring I described above, there's one more remaining issue which affects the light client. Ethereum is getting hardforked for upgrades more frequently now. Like at least twice per year. So we need to ensure the light client is able to handle these upgrades seamlessly, preferably without storage upgrades, as those are a pain. In practice this means the lightclient pallet needs to be able to accept LightClientUpdate updates that refer to either pre-upgrade and post-upgrade Ethereum state. We are prototyping some ideas. For example, using versioned data structures. Particularly if those are going to put in storage: enum VersionedBeaconHeader {
V1(V1::BeaconHeader)
V2(V2::BeaconHeader)
} The problem is not straightforward, because with Ethereum, the consensus layer and execution layer can be upgraded separately. For example, in the upcoming Deneb upgrade, this field will be added to the execution payload: https://github.com/ChainSafe/lodestar/blob/f16192f079d68835f05feada7aff009c20ada963/packages/types/src/deneb/sszTypes.ts#L89 We need to think about the problem some more and would appreciate it if you have any thoughts. |
no longer needed for now |
This will prevent the pallet to consume arbitrary amount of storage and data will have a fix upper bound. PR is opened here based on my commit: Bound finalized header, execution header and sync committee by RingBuffer and BoundedVec Snowfork/snowbridge#815
Currently, if relayer is restarted, it does not start off from where it is left rather it recalculate and often time skips some headers. By having it reconstruct precise state upon restart, we can make sure that nothing is skipped.
The text was updated successfully, but these errors were encountered: