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

Enhancement: Create a read-only version of nodeos #672

Open
1 task
heifner opened this issue Jul 13, 2022 · 3 comments
Open
1 task

Enhancement: Create a read-only version of nodeos #672

heifner opened this issue Jul 13, 2022 · 3 comments
Labels
planning Propose change to milestone in next planning meeting

Comments

@heifner
Copy link
Member

heifner commented Jul 13, 2022

In addition to #92 . Provide a mode where nodeos will never attempt to write to disk. It can start from a snapshot, run without any disk activity, and shutdown. Each startup would require a snapshot to launch.

@heifner heifner added the planning Propose change to milestone in next planning meeting label Jul 13, 2022
@arhag
Copy link
Member

arhag commented Jul 13, 2022

In the future, if the P2P protocol was updated to allow automatically downloading snapshot state from peers, then it could even shut down and start up without requiring a new recent snapshot file to be moved to disk to load from (or continue to start from an increasingly old snapshot and require more sync time).

But in that case, there is a concern of the node knowing whether to trust the snapshot state provided to it over the network. I imagine this feature being most useful in a trusted local network with fast pipes between nodes. But it would be best to have additional security regardless.

It could write the snapshot integrity hash of the last irreversible block on shutdown so that it knows how to check the state it would re-download on startup to not be tricked. The first time bootstrapping would require either loading from a trusted snapshot file or having the operator explicitly provide the snapshot integrity hash corresponding to the state at the block height it requests to start from.

@arhag
Copy link
Member

arhag commented Jul 13, 2022

I think it could be useful to allow an option in which OC compiled contracts are still written to disk. The disk IO is probably not that significant for the OC database and the time spent trying to recompile accessed contracts after each startup could be very significant that it seriously hinders syncing.

OC compiled artifacts are tricky given that we do not want to include them as part of the portable snapshot file (potential determinism concerns regarding generated artifacts) but those compiled artifacts would ultimately be necessary for timely computation in a network where the BPs have all adopted EOS VM OC as the runtime (and its power is being effectively used in the network).

I'm sure a lot more thought needs to be given on how to handle OC. Fortunately, right now with the still standing recommendation to not use OC in public networks, these problems can be pushed off for the time being since nodes should be able to get away with syncing to public networks using the runtime of EOS VM JIT only.

@stephenpdeos
Copy link
Member

@heifner to author a proposal as a PR into proposals within product repo for further discussion

@stephenpdeos stephenpdeos added planning Propose change to milestone in next planning meeting and removed planning Propose change to milestone in next planning meeting labels Jul 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
planning Propose change to milestone in next planning meeting
Projects
Status: Todo
Development

No branches or pull requests

3 participants