d839b9d07e
Currently, we require genesis and a checkpoint block and state to start from an arbitrary slot - this PR relaxes this requirement so that we can start with a state alone. The current trusted-node-sync algorithm works by first downloading blocks until we find an epoch aligned non-empty slot, then downloads the state via slot. However, current [proposals](https://github.com/ethereum/beacon-APIs/pull/226) for checkpointing prefer finalized state as the main reference - this allows more simple access control and caching on the server side - in particular, this should help checkpoint-syncing from sources that have a fast `finalized` state download (like infura and teku) but are slow when accessing state via slot. Earlier versions of Nimbus will not be able to read databases created without a checkpoint block and genesis. In most cases, backfilling makes the database compatible except where genesis is also missing (custom networks). * backfill checkpoint block from libp2p instead of checkpoint source, when doing trusted node sync * allow starting the client without genesis / checkpoint block * perform epoch start slot lookahead when loading tail state, so as to deal with the case where the epoch start slot does not have a block * replace `--blockId` with `--state-id` in TNS command line * when replaying, also look at the parent of the last-known-block (even if we don't have the parent block data, we can still replay from a "parent" state) - in particular, this clears the way for implementing state pruning * deprecate `--finalized-checkpoint-block` option (no longer needed) |
||
---|---|---|
.. | ||
nbc_audit_2020 | ||
the_auditors_handbook | ||
the_nimbus_book | ||
.gitignore | ||
Makefile | ||
README.md | ||
attestation_flow.dot | ||
attestation_flow.md | ||
attestation_flow.png | ||
block_flow.dot | ||
block_flow.md | ||
block_flow.png | ||
cpu_features.md | ||
e2store.md | ||
kiln_geth_local_testnet.md | ||
kiln_geth_logs.png | ||
logging.md | ||
nimbus_localhost_run.png | ||
requirements.in | ||
requirements.txt |
README.md
Documentation
material for mkdocs
The Nimbus guide is generated using Material for mkdocs, and installed using a python VENV (see Makefile).
mdbook
Some books in this folder were produced using mdBook - see installation guide.
# Install or update tooling (make sure you add "~/.cargo/bin" to PATH):
cargo install mdbook --version 0.4.18
cargo install mdbook-toc --version 0.8.0
cargo install mdbook-open-on-gh --version 2.1.0
cargo install mdbook-admonish --version 1.7.0
# Work on the book locally - open "http://localhost:4000" for live version
cd docs/the_nimbus_book
mdbook serve -p 4000
# Create a local copy of the book
make book
# Publish book using makefile (in the top-level dir)
make publish-book