-
Notifications
You must be signed in to change notification settings - Fork 106
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
Solana geyser plugin for proof generation (inclusion and non-inclusion) per block #1087
base: nightly
Are you sure you want to change the base?
Conversation
There is a big push right now to pull RPC functionality out of the validator. The backbone of this is a geyser plugin that runs a gRPC server with subscriptions mirroring the geyser interface (can see some more info here and here, the component you would implement in this model would be an Wondering if you would consider writing this plugin as a consumer of the gRPC stream instead of as a dedicated plugin? Some of the benefits are
We are using this plugin successfully in production now and lots of resources are being put towards it |
hi @vovkman , one of the reasons to run it inside the validator is to push the responsibility of running extra infra into the validator itself and to not keep track of missed updates etc on the client side - in case something goes wrong or older updates are needed, its easier to start the validator with a previous snapshot and the plugin would process the blocks from that point o the original client was actually one that calculated the proofs etc on the client side based on raw geyser updated (as you suggested), but would it would require more responsibility on the client side (and the server as well, since the intermediate account updates need to be stored to be served). if you check https://github.com/Sovereign-Labs/sovereign-sdk/pull/1087/files#diff-f14178dd29b7be7ec21b4b270e14f8b0d4a75aac7ffad6e4d8d928bfbf186cb9 its actually client side implementation for the block/account processing. also, to clarify, this just requires an RPC (or a full node), and doesn't need to run inside a voting validator overall, I believe whatever solution is easier infra-wise for application layer :) |
|
Summary
The major component in this PR is a geyser plugin that can be plugged into a solana validator and stream merkle inclusion and non-inclusion proofs for the accounts that we want to monitor. If an account is modified in a specific block, we get an inclusion proof. If the account is not modified we get a non-inclusion merkle proof.
Note
The following is a WIP and has been halted at a stable point. We will be gradually committing to it on a need basis and encouraging open source contributions, but it is incomplete as of now
Changes