From 599de19fb391afe5257c5f7d1275396f6c639f18 Mon Sep 17 00:00:00 2001 From: Yash Atreya <44857776+yash-atreya@users.noreply.github.com> Date: Tue, 24 Jun 2025 20:30:56 +0530 Subject: [PATCH] chore(`book`): migrate to vocs (#16605) Co-authored-by: Claude Co-authored-by: Matthias Seitz --- .github/workflows/book.yml | 115 +--- .github/workflows/lint.yml | 5 - .github/workflows/unit.yml | 4 - .gitignore | 3 + book/SUMMARY.md | 84 --- book/cli/SUMMARY.md | 47 -- book/cli/help.rs | 98 ++-- book/cli/reth/debug/replay-engine.md | 332 ----------- book/cli/reth/import-op.md | 134 ----- book/cli/reth/import-receipts-op.md | 133 ----- book/cli/reth/test-vectors.md | 113 ---- book/cli/update.sh | 7 +- book/developers/contribute.md | 9 - book/developers/developers.md | 3 - book/installation/priorities.md | 18 - book/run/ports.md | 38 -- book/run/run-a-node.md | 15 - book/templates/source_and_github.md | 4 - book/theme/head.hbs | 5 - book/vocs/CLAUDE.md | 103 ++++ book/vocs/README.md | 1 + book/vocs/bun.lockb | Bin 0 -> 302056 bytes book/vocs/check-links.ts | 316 +++++++++++ book/vocs/docs/components/SdkShowcase.tsx | 88 +++ book/vocs/docs/components/TrustedBy.tsx | 49 ++ book/vocs/docs/pages/cli/SUMMARY.mdx | 47 ++ .../cli.md => vocs/docs/pages/cli/cli.mdx} | 4 +- book/{ => vocs/docs/pages}/cli/op-reth.md | 0 .../reth.md => vocs/docs/pages/cli/reth.mdx} | 0 .../docs/pages/cli/reth/config.mdx} | 0 .../db.md => vocs/docs/pages/cli/reth/db.mdx} | 0 .../docs/pages/cli/reth/db/checksum.mdx} | 0 .../docs/pages/cli/reth/db/clear.mdx} | 0 .../docs/pages/cli/reth/db/clear/mdbx.mdx} | 0 .../pages/cli/reth/db/clear/static-file.mdx} | 0 .../docs/pages/cli/reth/db/diff.mdx} | 0 .../docs/pages/cli/reth/db/drop.mdx} | 0 .../docs/pages/cli/reth/db/get.mdx} | 0 .../docs/pages/cli/reth/db/get/mdbx.mdx} | 0 .../pages/cli/reth/db/get/static-file.mdx} | 0 .../docs/pages/cli/reth/db/list.mdx} | 0 .../docs/pages/cli/reth/db/path.mdx} | 0 .../docs/pages/cli/reth/db/stats.mdx} | 0 .../docs/pages/cli/reth/db/version.mdx} | 0 .../docs/pages/cli/reth/debug.mdx} | 0 .../pages/cli/reth/debug/build-block.mdx} | 0 .../docs/pages/cli/reth/debug/execution.mdx} | 0 .../cli/reth/debug/in-memory-merkle.mdx} | 0 .../docs/pages/cli/reth/debug/merkle.mdx} | 0 .../docs/pages/cli/reth/download.mdx} | 0 .../docs/pages/cli/reth/dump-genesis.mdx} | 0 .../docs/pages/cli/reth/import-era.mdx} | 0 .../docs/pages/cli/reth/import.mdx} | 0 .../docs/pages/cli/reth/init-state.mdx} | 0 .../docs/pages/cli/reth/init.mdx} | 0 .../docs/pages/cli/reth/node.mdx} | 0 .../docs/pages/cli/reth/p2p.mdx} | 0 .../docs/pages/cli/reth/p2p/body.mdx} | 0 .../docs/pages/cli/reth/p2p/header.mdx} | 0 .../docs/pages/cli/reth/p2p/rlpx.mdx} | 0 .../docs/pages/cli/reth/p2p/rlpx/ping.mdx} | 0 .../docs/pages/cli/reth/prune.mdx} | 0 .../docs/pages/cli/reth/recover.mdx} | 0 .../pages/cli/reth/recover/storage-tries.mdx} | 0 .../docs/pages/cli/reth/stage.mdx} | 0 .../docs/pages/cli/reth/stage/drop.mdx} | 0 .../docs/pages/cli/reth/stage/dump.mdx} | 0 .../cli/reth/stage/dump/account-hashing.mdx} | 0 .../pages/cli/reth/stage/dump/execution.mdx} | 0 .../pages/cli/reth/stage/dump/merkle.mdx} | 0 .../cli/reth/stage/dump/storage-hashing.mdx} | 0 .../docs/pages/cli/reth/stage/run.mdx} | 0 .../docs/pages/cli/reth/stage/unwind.mdx} | 0 .../cli/reth/stage/unwind/num-blocks.mdx} | 0 .../pages/cli/reth/stage/unwind/to-block.mdx} | 0 .../pages/cli/reth/test-vectors/tables.mdx} | 0 .../docs/pages/exex/hello-world.mdx} | 30 +- .../docs/pages/exex/how-it-works.mdx} | 17 +- .../docs/pages/exex/overview.mdx} | 20 +- .../docs/pages/exex/remote.mdx} | 62 ++- .../docs/pages/exex/tracking-state.mdx} | 36 +- book/vocs/docs/pages/index.mdx | 162 ++++++ .../docs/pages/installation/binaries.mdx} | 6 +- .../installation/build-for-arm-devices.mdx} | 26 +- .../docs/pages/installation/docker.mdx} | 43 +- .../vocs/docs/pages/installation/overview.mdx | 18 + .../docs/pages/installation/priorities.mdx | 22 + .../docs/pages/installation/source.mdx} | 54 +- .../docs/pages/introduction/contributing.mdx | 258 +++++++++ .../vocs/docs/pages/introduction/why-reth.mdx | 50 ++ .../docs/pages/jsonrpc/admin.mdx} | 55 +- .../docs/pages/jsonrpc/debug.mdx} | 29 +- .../docs/pages/jsonrpc/eth.mdx} | 4 + .../docs/pages/jsonrpc/intro.mdx} | 33 +- .../docs/pages/jsonrpc/net.mdx} | 12 +- .../docs/pages/jsonrpc/rpc.mdx} | 6 +- .../docs/pages/jsonrpc/trace.mdx} | 68 +-- .../docs/pages/jsonrpc/txpool.mdx} | 14 +- .../docs/pages/jsonrpc/web3.mdx} | 11 +- .../docs/pages/overview.mdx} | 48 +- .../docs/pages/run/configuration.mdx} | 58 +- .../docs/pages/run/ethereum.mdx} | 44 +- .../docs/pages/run/ethereum/snapshots.mdx | 1 + book/vocs/docs/pages/run/faq.mdx | 11 + book/vocs/docs/pages/run/faq/ports.mdx | 42 ++ .../docs/pages/run/faq/profiling.mdx} | 66 ++- .../docs/pages/run/faq/pruning.mdx} | 56 +- .../docs/pages/run/faq/sync-op-mainnet.mdx} | 25 +- .../docs/pages/run/faq/transactions.mdx} | 4 + .../docs/pages/run/faq/troubleshooting.mdx} | 198 +++---- .../docs/pages/run/monitoring.mdx} | 24 +- book/vocs/docs/pages/run/networks.mdx | 1 + .../docs/pages/run/opstack.mdx} | 22 +- .../pages/run/opstack/op-mainnet-caveats.mdx | 1 + book/vocs/docs/pages/run/overview.mdx | 47 ++ .../docs/pages/run/private-testnets.mdx} | 44 +- .../docs/pages/run/system-requirements.mdx} | 55 +- .../pages/sdk/custom-node/modifications.mdx | 1 + .../pages/sdk/custom-node/prerequisites.mdx | 1 + .../docs/pages/sdk/examples/modify-node.mdx | 16 + .../sdk/examples/standalone-components.mdx | 12 + book/vocs/docs/pages/sdk/node-components.mdx | 112 ++++ .../pages/sdk/node-components/consensus.mdx | 45 ++ .../docs/pages/sdk/node-components/evm.mdx | 45 ++ .../pages/sdk/node-components/network.mdx | 55 ++ .../docs/pages/sdk/node-components/pool.mdx | 80 +++ .../docs/pages/sdk/node-components/rpc.mdx | 20 + book/vocs/docs/pages/sdk/overview.mdx | 127 +++++ book/vocs/docs/pages/sdk/typesystem/block.mdx | 26 + .../sdk/typesystem/transaction-types.mdx | 92 ++++ book/vocs/docs/public/alchemy.png | Bin 0 -> 27206 bytes book/vocs/docs/public/coinbase.png | Bin 0 -> 31453 bytes book/vocs/docs/public/flashbots.png | Bin 0 -> 38646 bytes book/vocs/docs/public/logo.png | Bin 0 -> 100250 bytes .../docs/public}/remote_exex.png | Bin book/vocs/docs/public/reth-prod.png | Bin 0 -> 324203 bytes book/vocs/docs/public/succinct.png | Bin 0 -> 2588 bytes .../docs/snippets}/sources/Cargo.toml | 0 .../sources/exex/hello-world/Cargo.toml | 0 .../sources/exex/hello-world/src/bin/1.rs | 0 .../sources/exex/hello-world/src/bin/2.rs | 0 .../sources/exex/hello-world/src/bin/3.rs | 0 .../snippets}/sources/exex/remote/Cargo.toml | 0 .../snippets}/sources/exex/remote/build.rs | 0 .../sources/exex/remote/proto/exex.proto | 0 .../sources/exex/remote/src/consumer.rs | 0 .../snippets}/sources/exex/remote/src/exex.rs | 0 .../sources/exex/remote/src/exex_1.rs | 0 .../sources/exex/remote/src/exex_2.rs | 0 .../sources/exex/remote/src/exex_3.rs | 0 .../sources/exex/remote/src/exex_4.rs | 0 .../snippets}/sources/exex/remote/src/lib.rs | 0 .../sources/exex/tracking-state/Cargo.toml | 0 .../sources/exex/tracking-state/src/bin/1.rs | 0 .../sources/exex/tracking-state/src/bin/2.rs | 0 book/vocs/docs/styles.css | 31 ++ book/vocs/generate-redirects.ts | 54 ++ book/vocs/links-report.json | 17 + book/vocs/package.json | 22 + book/vocs/redirects.config.ts | 27 + book/vocs/sidebar.ts | 514 ++++++++++++++++++ book/vocs/tsconfig.json | 24 + book/vocs/vocs.config.ts | 69 +++ 163 files changed, 3378 insertions(+), 1570 deletions(-) delete mode 100644 book/SUMMARY.md delete mode 100644 book/cli/SUMMARY.md delete mode 100644 book/cli/reth/debug/replay-engine.md delete mode 100644 book/cli/reth/import-op.md delete mode 100644 book/cli/reth/import-receipts-op.md delete mode 100644 book/cli/reth/test-vectors.md delete mode 100644 book/developers/contribute.md delete mode 100644 book/developers/developers.md delete mode 100644 book/installation/priorities.md delete mode 100644 book/run/ports.md delete mode 100644 book/run/run-a-node.md delete mode 100644 book/templates/source_and_github.md delete mode 100644 book/theme/head.hbs create mode 100644 book/vocs/CLAUDE.md create mode 100644 book/vocs/README.md create mode 100755 book/vocs/bun.lockb create mode 100644 book/vocs/check-links.ts create mode 100644 book/vocs/docs/components/SdkShowcase.tsx create mode 100644 book/vocs/docs/components/TrustedBy.tsx create mode 100644 book/vocs/docs/pages/cli/SUMMARY.mdx rename book/{cli/cli.md => vocs/docs/pages/cli/cli.mdx} (83%) rename book/{ => vocs/docs/pages}/cli/op-reth.md (100%) rename book/{cli/reth.md => vocs/docs/pages/cli/reth.mdx} (100%) rename book/{cli/reth/config.md => vocs/docs/pages/cli/reth/config.mdx} (100%) rename book/{cli/reth/db.md => vocs/docs/pages/cli/reth/db.mdx} (100%) rename book/{cli/reth/db/checksum.md => vocs/docs/pages/cli/reth/db/checksum.mdx} (100%) rename book/{cli/reth/db/clear.md => vocs/docs/pages/cli/reth/db/clear.mdx} (100%) rename book/{cli/reth/db/clear/mdbx.md => vocs/docs/pages/cli/reth/db/clear/mdbx.mdx} (100%) rename book/{cli/reth/db/clear/static-file.md => vocs/docs/pages/cli/reth/db/clear/static-file.mdx} (100%) rename book/{cli/reth/db/diff.md => vocs/docs/pages/cli/reth/db/diff.mdx} (100%) rename book/{cli/reth/db/drop.md => vocs/docs/pages/cli/reth/db/drop.mdx} (100%) rename book/{cli/reth/db/get.md => vocs/docs/pages/cli/reth/db/get.mdx} (100%) rename book/{cli/reth/db/get/mdbx.md => vocs/docs/pages/cli/reth/db/get/mdbx.mdx} (100%) rename book/{cli/reth/db/get/static-file.md => vocs/docs/pages/cli/reth/db/get/static-file.mdx} (100%) rename book/{cli/reth/db/list.md => vocs/docs/pages/cli/reth/db/list.mdx} (100%) rename book/{cli/reth/db/path.md => vocs/docs/pages/cli/reth/db/path.mdx} (100%) rename book/{cli/reth/db/stats.md => vocs/docs/pages/cli/reth/db/stats.mdx} (100%) rename book/{cli/reth/db/version.md => vocs/docs/pages/cli/reth/db/version.mdx} (100%) rename book/{cli/reth/debug.md => vocs/docs/pages/cli/reth/debug.mdx} (100%) rename book/{cli/reth/debug/build-block.md => vocs/docs/pages/cli/reth/debug/build-block.mdx} (100%) rename book/{cli/reth/debug/execution.md => vocs/docs/pages/cli/reth/debug/execution.mdx} (100%) rename book/{cli/reth/debug/in-memory-merkle.md => vocs/docs/pages/cli/reth/debug/in-memory-merkle.mdx} (100%) rename book/{cli/reth/debug/merkle.md => vocs/docs/pages/cli/reth/debug/merkle.mdx} (100%) rename book/{cli/reth/download.md => vocs/docs/pages/cli/reth/download.mdx} (100%) rename book/{cli/reth/dump-genesis.md => vocs/docs/pages/cli/reth/dump-genesis.mdx} (100%) rename book/{cli/reth/import-era.md => vocs/docs/pages/cli/reth/import-era.mdx} (100%) rename book/{cli/reth/import.md => vocs/docs/pages/cli/reth/import.mdx} (100%) rename book/{cli/reth/init-state.md => vocs/docs/pages/cli/reth/init-state.mdx} (100%) rename book/{cli/reth/init.md => vocs/docs/pages/cli/reth/init.mdx} (100%) rename book/{cli/reth/node.md => vocs/docs/pages/cli/reth/node.mdx} (100%) rename book/{cli/reth/p2p.md => vocs/docs/pages/cli/reth/p2p.mdx} (100%) rename book/{cli/reth/p2p/body.md => vocs/docs/pages/cli/reth/p2p/body.mdx} (100%) rename book/{cli/reth/p2p/header.md => vocs/docs/pages/cli/reth/p2p/header.mdx} (100%) rename book/{cli/reth/p2p/rlpx.md => vocs/docs/pages/cli/reth/p2p/rlpx.mdx} (100%) rename book/{cli/reth/p2p/rlpx/ping.md => vocs/docs/pages/cli/reth/p2p/rlpx/ping.mdx} (100%) rename book/{cli/reth/prune.md => vocs/docs/pages/cli/reth/prune.mdx} (100%) rename book/{cli/reth/recover.md => vocs/docs/pages/cli/reth/recover.mdx} (100%) rename book/{cli/reth/recover/storage-tries.md => vocs/docs/pages/cli/reth/recover/storage-tries.mdx} (100%) rename book/{cli/reth/stage.md => vocs/docs/pages/cli/reth/stage.mdx} (100%) rename book/{cli/reth/stage/drop.md => vocs/docs/pages/cli/reth/stage/drop.mdx} (100%) rename book/{cli/reth/stage/dump.md => vocs/docs/pages/cli/reth/stage/dump.mdx} (100%) rename book/{cli/reth/stage/dump/account-hashing.md => vocs/docs/pages/cli/reth/stage/dump/account-hashing.mdx} (100%) rename book/{cli/reth/stage/dump/execution.md => vocs/docs/pages/cli/reth/stage/dump/execution.mdx} (100%) rename book/{cli/reth/stage/dump/merkle.md => vocs/docs/pages/cli/reth/stage/dump/merkle.mdx} (100%) rename book/{cli/reth/stage/dump/storage-hashing.md => vocs/docs/pages/cli/reth/stage/dump/storage-hashing.mdx} (100%) rename book/{cli/reth/stage/run.md => vocs/docs/pages/cli/reth/stage/run.mdx} (100%) rename book/{cli/reth/stage/unwind.md => vocs/docs/pages/cli/reth/stage/unwind.mdx} (100%) rename book/{cli/reth/stage/unwind/num-blocks.md => vocs/docs/pages/cli/reth/stage/unwind/num-blocks.mdx} (100%) rename book/{cli/reth/stage/unwind/to-block.md => vocs/docs/pages/cli/reth/stage/unwind/to-block.mdx} (100%) rename book/{cli/reth/test-vectors/tables.md => vocs/docs/pages/cli/reth/test-vectors/tables.mdx} (100%) rename book/{developers/exex/hello-world.md => vocs/docs/pages/exex/hello-world.mdx} (70%) rename book/{developers/exex/how-it-works.md => vocs/docs/pages/exex/how-it-works.mdx} (67%) rename book/{developers/exex/exex.md => vocs/docs/pages/exex/overview.mdx} (62%) rename book/{developers/exex/remote.md => vocs/docs/pages/exex/remote.mdx} (76%) rename book/{developers/exex/tracking-state.md => vocs/docs/pages/exex/tracking-state.mdx} (63%) create mode 100644 book/vocs/docs/pages/index.mdx rename book/{installation/binaries.md => vocs/docs/pages/installation/binaries.mdx} (90%) rename book/{installation/build-for-arm-devices.md => vocs/docs/pages/installation/build-for-arm-devices.mdx} (82%) rename book/{installation/docker.md => vocs/docs/pages/installation/docker.mdx} (80%) create mode 100644 book/vocs/docs/pages/installation/overview.mdx create mode 100644 book/vocs/docs/pages/installation/priorities.mdx rename book/{installation/source.md => vocs/docs/pages/installation/source.mdx} (72%) create mode 100644 book/vocs/docs/pages/introduction/contributing.mdx create mode 100644 book/vocs/docs/pages/introduction/why-reth.mdx rename book/{jsonrpc/admin.md => vocs/docs/pages/jsonrpc/admin.mdx} (79%) rename book/{jsonrpc/debug.md => vocs/docs/pages/jsonrpc/debug.mdx} (80%) rename book/{jsonrpc/eth.md => vocs/docs/pages/jsonrpc/eth.mdx} (72%) rename book/{jsonrpc/intro.md => vocs/docs/pages/jsonrpc/intro.mdx} (70%) rename book/{jsonrpc/net.md => vocs/docs/pages/jsonrpc/net.mdx} (82%) rename book/{jsonrpc/rpc.md => vocs/docs/pages/jsonrpc/rpc.mdx} (91%) rename book/{jsonrpc/trace.md => vocs/docs/pages/jsonrpc/trace.mdx} (86%) rename book/{jsonrpc/txpool.md => vocs/docs/pages/jsonrpc/txpool.mdx} (81%) rename book/{jsonrpc/web3.md => vocs/docs/pages/jsonrpc/web3.mdx} (83%) rename book/{intro.md => vocs/docs/pages/overview.mdx} (72%) rename book/{run/config.md => vocs/docs/pages/run/configuration.mdx} (90%) rename book/{run/mainnet.md => vocs/docs/pages/run/ethereum.mdx} (73%) create mode 100644 book/vocs/docs/pages/run/ethereum/snapshots.mdx create mode 100644 book/vocs/docs/pages/run/faq.mdx create mode 100644 book/vocs/docs/pages/run/faq/ports.mdx rename book/{developers/profiling.md => vocs/docs/pages/run/faq/profiling.mdx} (84%) rename book/{run/pruning.md => vocs/docs/pages/run/faq/pruning.mdx} (92%) rename book/{run/sync-op-mainnet.md => vocs/docs/pages/run/faq/sync-op-mainnet.mdx} (70%) rename book/{run/transactions.md => vocs/docs/pages/run/faq/transactions.mdx} (97%) rename book/{run/troubleshooting.md => vocs/docs/pages/run/faq/troubleshooting.mdx} (52%) rename book/{run/observability.md => vocs/docs/pages/run/monitoring.mdx} (92%) create mode 100644 book/vocs/docs/pages/run/networks.mdx rename book/{run/optimism.md => vocs/docs/pages/run/opstack.mdx} (95%) create mode 100644 book/vocs/docs/pages/run/opstack/op-mainnet-caveats.mdx create mode 100644 book/vocs/docs/pages/run/overview.mdx rename book/{run/private-testnet.md => vocs/docs/pages/run/private-testnets.mdx} (90%) rename book/{installation/installation.md => vocs/docs/pages/run/system-requirements.mdx} (68%) create mode 100644 book/vocs/docs/pages/sdk/custom-node/modifications.mdx create mode 100644 book/vocs/docs/pages/sdk/custom-node/prerequisites.mdx create mode 100644 book/vocs/docs/pages/sdk/examples/modify-node.mdx create mode 100644 book/vocs/docs/pages/sdk/examples/standalone-components.mdx create mode 100644 book/vocs/docs/pages/sdk/node-components.mdx create mode 100644 book/vocs/docs/pages/sdk/node-components/consensus.mdx create mode 100644 book/vocs/docs/pages/sdk/node-components/evm.mdx create mode 100644 book/vocs/docs/pages/sdk/node-components/network.mdx create mode 100644 book/vocs/docs/pages/sdk/node-components/pool.mdx create mode 100644 book/vocs/docs/pages/sdk/node-components/rpc.mdx create mode 100644 book/vocs/docs/pages/sdk/overview.mdx create mode 100644 book/vocs/docs/pages/sdk/typesystem/block.mdx create mode 100644 book/vocs/docs/pages/sdk/typesystem/transaction-types.mdx create mode 100644 book/vocs/docs/public/alchemy.png create mode 100644 book/vocs/docs/public/coinbase.png create mode 100644 book/vocs/docs/public/flashbots.png create mode 100644 book/vocs/docs/public/logo.png rename book/{developers/exex/assets => vocs/docs/public}/remote_exex.png (100%) create mode 100644 book/vocs/docs/public/reth-prod.png create mode 100644 book/vocs/docs/public/succinct.png rename book/{ => vocs/docs/snippets}/sources/Cargo.toml (100%) rename book/{ => vocs/docs/snippets}/sources/exex/hello-world/Cargo.toml (100%) rename book/{ => vocs/docs/snippets}/sources/exex/hello-world/src/bin/1.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/hello-world/src/bin/2.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/hello-world/src/bin/3.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/Cargo.toml (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/build.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/proto/exex.proto (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/consumer.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/exex.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/exex_1.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/exex_2.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/exex_3.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/exex_4.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/remote/src/lib.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/tracking-state/Cargo.toml (100%) rename book/{ => vocs/docs/snippets}/sources/exex/tracking-state/src/bin/1.rs (100%) rename book/{ => vocs/docs/snippets}/sources/exex/tracking-state/src/bin/2.rs (100%) create mode 100644 book/vocs/docs/styles.css create mode 100644 book/vocs/generate-redirects.ts create mode 100644 book/vocs/links-report.json create mode 100644 book/vocs/package.json create mode 100644 book/vocs/redirects.config.ts create mode 100644 book/vocs/sidebar.ts create mode 100644 book/vocs/tsconfig.json create mode 100644 book/vocs/vocs.config.ts diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml index 837d47e9f8..abc93f85c2 100644 --- a/.github/workflows/book.yml +++ b/.github/workflows/book.yml @@ -7,115 +7,50 @@ on: branches: [main] pull_request: branches: [main] + types: [opened, reopened, synchronize, closed] merge_group: +# Add concurrency to prevent conflicts when multiple PR previews are being deployed +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + jobs: - test: - runs-on: ubuntu-latest - name: test - timeout-minutes: 60 - - steps: - - uses: actions/checkout@v4 - - - name: Install mdbook - run: | - mkdir mdbook - curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo $(pwd)/mdbook >> $GITHUB_PATH - - - name: Install mdbook-template - run: | - mkdir mdbook-template - curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template - echo $(pwd)/mdbook-template >> $GITHUB_PATH - - - name: Run tests - run: mdbook test - - lint: - runs-on: ubuntu-latest - name: lint - timeout-minutes: 60 - - steps: - - uses: actions/checkout@v4 - - - name: Install mdbook-linkcheck - run: | - mkdir mdbook-linkcheck - curl -sSL -o mdbook-linkcheck.zip https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip - unzip mdbook-linkcheck.zip -d ./mdbook-linkcheck - chmod +x $(pwd)/mdbook-linkcheck/mdbook-linkcheck - echo $(pwd)/mdbook-linkcheck >> $GITHUB_PATH - - - name: Run linkcheck - run: mdbook-linkcheck --standalone - build: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v4 - - uses: rui314/setup-mold@v1 - - uses: dtolnay/rust-toolchain@nightly - - name: Install mdbook + - name: Checkout + uses: actions/checkout@v4 + + - name: Install bun + uses: oven-sh/setup-bun@v2 + + - name: Install Playwright browsers + # Required for rehype-mermaid to render Mermaid diagrams during build run: | - mkdir mdbook - curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook - echo $(pwd)/mdbook >> $GITHUB_PATH + cd book/vocs/ + bun i + npx playwright install --with-deps chromium - - name: Install mdbook-template + - name: Build Vocs run: | - mkdir mdbook-template - curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template - echo $(pwd)/mdbook-template >> $GITHUB_PATH + cd book/vocs/ && bun run build + echo "Vocs Build Complete" - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - - name: Build book - run: mdbook build - - - name: Build docs - run: cargo docs --exclude "example-*" - env: - # Keep in sync with ./ci.yml:jobs.docs - RUSTDOCFLAGS: --cfg docsrs --show-type-layout --generate-link-to-definition --enable-index-page -Zunstable-options - - - name: Move docs to book folder - run: | - mv target/doc target/book/docs - - - name: Archive artifact - shell: sh - run: | - chmod -c -R +rX "target/book" | - while read line; do - echo "::warning title=Invalid file permissions automatically fixed::$line" - done - tar \ - --dereference --hard-dereference \ - --directory "target/book" \ - -cvf "$RUNNER_TEMP/artifact.tar" \ - --exclude=.git \ - --exclude=.github \ - . + - name: Setup Pages + uses: actions/configure-pages@v5 - name: Upload artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-pages-artifact@v3 with: - name: github-pages - path: ${{ runner.temp }}/artifact.tar - retention-days: 1 - if-no-files-found: error + path: "./book/vocs/docs/dist" deploy: # Only deploy if a push to main if: github.ref_name == 'main' && github.event_name == 'push' runs-on: ubuntu-latest - needs: [test, lint, build] + needs: [build] # Grant GITHUB_TOKEN the permissions required to make a Pages deployment permissions: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ffa9f8edc3..7a167da8b1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,9 +20,6 @@ jobs: - type: ethereum args: --workspace --lib --examples --tests --benches --locked features: "ethereum asm-keccak jemalloc jemalloc-prof min-error-logs min-warn-logs min-info-logs min-debug-logs min-trace-logs" - - type: book - args: --manifest-path book/sources/Cargo.toml --workspace --bins - features: "" steps: - uses: actions/checkout@v4 - uses: rui314/setup-mold@v1 @@ -158,8 +155,6 @@ jobs: components: rustfmt - name: Run fmt run: cargo fmt --all --check - - name: Run fmt on book sources - run: cargo fmt --manifest-path book/sources/Cargo.toml --all --check udeps: name: udeps diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 767a3e5c0a..a46bf5bc3c 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -42,10 +42,6 @@ jobs: args: --features "asm-keccak" --locked --exclude reth --exclude reth-bench --exclude "example-*" --exclude "reth-ethereum-*" --exclude "*-ethereum" partition: 2 total_partitions: 2 - - type: book - args: --manifest-path book/sources/Cargo.toml - partition: 1 - total_partitions: 1 timeout-minutes: 30 steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 1072d75dfa..e4ca0420ba 100644 --- a/.gitignore +++ b/.gitignore @@ -54,5 +54,8 @@ rustc-ice-* # Book sources should be able to build with the latest version book/sources/Cargo.lock +# vocs node_modules +book/vocs/node_modules + # Cargo chef recipe file recipe.json diff --git a/book/SUMMARY.md b/book/SUMMARY.md deleted file mode 100644 index 310eebb028..0000000000 --- a/book/SUMMARY.md +++ /dev/null @@ -1,84 +0,0 @@ -# Reth Book - -- [Introduction](./intro.md) -- [Installation](./installation/installation.md) - - [Pre-Built Binaries](./installation/binaries.md) - - [Docker](./installation/docker.md) - - [Build from Source](./installation/source.md) - - [Build for ARM devices](./installation/build-for-arm-devices.md) - - [Update Priorities](./installation/priorities.md) -- [Run a Node](./run/run-a-node.md) - - [Mainnet or official testnets](./run/mainnet.md) - - [OP Stack](./run/optimism.md) - - [Run an OP Mainnet Node](./run/sync-op-mainnet.md) - - [Private testnet](./run/private-testnet.md) - - [Metrics](./run/observability.md) - - [Configuring Reth](./run/config.md) - - [Transaction types](./run/transactions.md) - - [Pruning & Full Node](./run/pruning.md) - - [Ports](./run/ports.md) - - [Troubleshooting](./run/troubleshooting.md) -- [Interacting with Reth over JSON-RPC](./jsonrpc/intro.md) - - [eth](./jsonrpc/eth.md) - - [web3](./jsonrpc/web3.md) - - [net](./jsonrpc/net.md) - - [txpool](./jsonrpc/txpool.md) - - [debug](./jsonrpc/debug.md) - - [trace](./jsonrpc/trace.md) - - [admin](./jsonrpc/admin.md) - - [rpc](./jsonrpc/rpc.md) -- [CLI Reference](./cli/cli.md) - - [`reth`](./cli/reth.md) - - [`reth node`](./cli/reth/node.md) - - [`reth init`](./cli/reth/init.md) - - [`reth init-state`](./cli/reth/init-state.md) - - [`reth import`](./cli/reth/import.md) - - [`reth import-era`](./cli/reth/import-era.md) - - [`reth dump-genesis`](./cli/reth/dump-genesis.md) - - [`reth db`](./cli/reth/db.md) - - [`reth db stats`](./cli/reth/db/stats.md) - - [`reth db list`](./cli/reth/db/list.md) - - [`reth db checksum`](./cli/reth/db/checksum.md) - - [`reth db diff`](./cli/reth/db/diff.md) - - [`reth db get`](./cli/reth/db/get.md) - - [`reth db get mdbx`](./cli/reth/db/get/mdbx.md) - - [`reth db get static-file`](./cli/reth/db/get/static-file.md) - - [`reth db drop`](./cli/reth/db/drop.md) - - [`reth db clear`](./cli/reth/db/clear.md) - - [`reth db clear mdbx`](./cli/reth/db/clear/mdbx.md) - - [`reth db clear static-file`](./cli/reth/db/clear/static-file.md) - - [`reth db version`](./cli/reth/db/version.md) - - [`reth db path`](./cli/reth/db/path.md) - - [`reth download`](./cli/reth/download.md) - - [`reth stage`](./cli/reth/stage.md) - - [`reth stage run`](./cli/reth/stage/run.md) - - [`reth stage drop`](./cli/reth/stage/drop.md) - - [`reth stage dump`](./cli/reth/stage/dump.md) - - [`reth stage dump execution`](./cli/reth/stage/dump/execution.md) - - [`reth stage dump storage-hashing`](./cli/reth/stage/dump/storage-hashing.md) - - [`reth stage dump account-hashing`](./cli/reth/stage/dump/account-hashing.md) - - [`reth stage dump merkle`](./cli/reth/stage/dump/merkle.md) - - [`reth stage unwind`](./cli/reth/stage/unwind.md) - - [`reth stage unwind to-block`](./cli/reth/stage/unwind/to-block.md) - - [`reth stage unwind num-blocks`](./cli/reth/stage/unwind/num-blocks.md) - - [`reth p2p`](./cli/reth/p2p.md) - - [`reth p2p header`](./cli/reth/p2p/header.md) - - [`reth p2p body`](./cli/reth/p2p/body.md) - - [`reth p2p rlpx`](./cli/reth/p2p/rlpx.md) - - [`reth p2p rlpx ping`](./cli/reth/p2p/rlpx/ping.md) - - [`reth config`](./cli/reth/config.md) - - [`reth debug`](./cli/reth/debug.md) - - [`reth debug execution`](./cli/reth/debug/execution.md) - - [`reth debug merkle`](./cli/reth/debug/merkle.md) - - [`reth debug in-memory-merkle`](./cli/reth/debug/in-memory-merkle.md) - - [`reth debug build-block`](./cli/reth/debug/build-block.md) - - [`reth recover`](./cli/reth/recover.md) - - [`reth recover storage-tries`](./cli/reth/recover/storage-tries.md) - - [`reth prune`](./cli/reth/prune.md) -- [Developers](./developers/developers.md) - - [Execution Extensions](./developers/exex/exex.md) - - [How do ExExes work?](./developers/exex/how-it-works.md) - - [Hello World](./developers/exex/hello-world.md) - - [Tracking State](./developers/exex/tracking-state.md) - - [Remote](./developers/exex/remote.md) - - [Contribute](./developers/contribute.md) diff --git a/book/cli/SUMMARY.md b/book/cli/SUMMARY.md deleted file mode 100644 index aa62529859..0000000000 --- a/book/cli/SUMMARY.md +++ /dev/null @@ -1,47 +0,0 @@ -- [`reth`](./reth.md) - - [`reth node`](./reth/node.md) - - [`reth init`](./reth/init.md) - - [`reth init-state`](./reth/init-state.md) - - [`reth import`](./reth/import.md) - - [`reth import-era`](./reth/import-era.md) - - [`reth dump-genesis`](./reth/dump-genesis.md) - - [`reth db`](./reth/db.md) - - [`reth db stats`](./reth/db/stats.md) - - [`reth db list`](./reth/db/list.md) - - [`reth db checksum`](./reth/db/checksum.md) - - [`reth db diff`](./reth/db/diff.md) - - [`reth db get`](./reth/db/get.md) - - [`reth db get mdbx`](./reth/db/get/mdbx.md) - - [`reth db get static-file`](./reth/db/get/static-file.md) - - [`reth db drop`](./reth/db/drop.md) - - [`reth db clear`](./reth/db/clear.md) - - [`reth db clear mdbx`](./reth/db/clear/mdbx.md) - - [`reth db clear static-file`](./reth/db/clear/static-file.md) - - [`reth db version`](./reth/db/version.md) - - [`reth db path`](./reth/db/path.md) - - [`reth download`](./reth/download.md) - - [`reth stage`](./reth/stage.md) - - [`reth stage run`](./reth/stage/run.md) - - [`reth stage drop`](./reth/stage/drop.md) - - [`reth stage dump`](./reth/stage/dump.md) - - [`reth stage dump execution`](./reth/stage/dump/execution.md) - - [`reth stage dump storage-hashing`](./reth/stage/dump/storage-hashing.md) - - [`reth stage dump account-hashing`](./reth/stage/dump/account-hashing.md) - - [`reth stage dump merkle`](./reth/stage/dump/merkle.md) - - [`reth stage unwind`](./reth/stage/unwind.md) - - [`reth stage unwind to-block`](./reth/stage/unwind/to-block.md) - - [`reth stage unwind num-blocks`](./reth/stage/unwind/num-blocks.md) - - [`reth p2p`](./reth/p2p.md) - - [`reth p2p header`](./reth/p2p/header.md) - - [`reth p2p body`](./reth/p2p/body.md) - - [`reth p2p rlpx`](./reth/p2p/rlpx.md) - - [`reth p2p rlpx ping`](./reth/p2p/rlpx/ping.md) - - [`reth config`](./reth/config.md) - - [`reth debug`](./reth/debug.md) - - [`reth debug execution`](./reth/debug/execution.md) - - [`reth debug merkle`](./reth/debug/merkle.md) - - [`reth debug in-memory-merkle`](./reth/debug/in-memory-merkle.md) - - [`reth debug build-block`](./reth/debug/build-block.md) - - [`reth recover`](./reth/recover.md) - - [`reth recover storage-tries`](./reth/recover/storage-tries.md) - - [`reth prune`](./reth/prune.md) diff --git a/book/cli/help.rs b/book/cli/help.rs index 963f53deb0..e97d0bbfc4 100755 --- a/book/cli/help.rs +++ b/book/cli/help.rs @@ -10,25 +10,28 @@ regex = "1" --- use clap::Parser; use regex::Regex; -use std::borrow::Cow; -use std::fs::{self, File}; -use std::io::{self, Write}; -use std::iter::once; -use std::path::{Path, PathBuf}; -use std::process::{Command, Stdio}; -use std::str; -use std::sync::LazyLock; -use std::{fmt, process}; +use std::{ + borrow::Cow, + fmt, + fs::{self, File}, + io::{self, Write}, + iter::once, + path::{Path, PathBuf}, + process, + process::{Command, Stdio}, + str, + sync::LazyLock, +}; -const SECTION_START: &str = ""; -const SECTION_END: &str = ""; -const README: &str = r#"# CLI Reference +const SECTION_START: &str = "{/* CLI_REFERENCE START */}"; +const SECTION_END: &str = "{/* CLI_REFERENCE END */"; +const README: &str = r#"import Summary from './SUMMARY.mdx'; - +# CLI Reference Automatically-generated CLI reference from `--help` output. -{{#include ./SUMMARY.md}} + "#; const TRIM_LINE_END_MARKDOWN: bool = true; @@ -49,7 +52,7 @@ struct Args { #[arg(long, default_value_t = String::from("."))] root_dir: String, - /// Indentation for the root SUMMARY.md file + /// Indentation for the root SUMMARY.mdx file #[arg(long, default_value_t = 2)] root_indentation: usize, @@ -61,7 +64,7 @@ struct Args { #[arg(long)] readme: bool, - /// Whether to update the root SUMMARY.md file + /// Whether to update the root SUMMARY.mdx file #[arg(long)] root_summary: bool, @@ -76,11 +79,7 @@ struct Args { fn write_file(file_path: &Path, content: &str) -> io::Result<()> { let content = if TRIM_LINE_END_MARKDOWN { - content - .lines() - .map(|line| line.trim_end()) - .collect::>() - .join("\n") + content.lines().map(|line| line.trim_end()).collect::>().join("\n") } else { content.to_string() }; @@ -106,25 +105,13 @@ fn main() -> io::Result<()> { while let Some(cmd) = todo_iter.pop() { let (new_subcmds, stdout) = get_entry(&cmd)?; if args.verbose && !new_subcmds.is_empty() { - println!( - "Found subcommands for \"{}\": {:?}", - cmd.command_name(), - new_subcmds - ); + println!("Found subcommands for \"{}\": {:?}", cmd.command_name(), new_subcmds); } // Add new subcommands to todo_iter (so that they are processed in the correct order). for subcmd in new_subcmds.into_iter().rev() { - let new_subcmds: Vec<_> = cmd - .subcommands - .iter() - .cloned() - .chain(once(subcmd)) - .collect(); + let new_subcmds: Vec<_> = cmd.subcommands.iter().cloned().chain(once(subcmd)).collect(); - todo_iter.push(Cmd { - cmd: cmd.cmd, - subcommands: new_subcmds, - }); + todo_iter.push(Cmd { cmd: cmd.cmd, subcommands: new_subcmds }); } output.push((cmd, stdout)); } @@ -134,25 +121,25 @@ fn main() -> io::Result<()> { cmd_markdown(&out_dir, cmd, stdout)?; } - // Generate SUMMARY.md. + // Generate SUMMARY.mdx. let summary: String = output .iter() .map(|(cmd, _)| cmd_summary(None, cmd, 0)) .chain(once("\n".to_string())) .collect(); - write_file(&out_dir.clone().join("SUMMARY.md"), &summary)?; + write_file(&out_dir.clone().join("SUMMARY.mdx"), &summary)?; // Generate README.md. if args.readme { - let path = &out_dir.join("README.md"); + let path = &out_dir.join("README.mdx"); if args.verbose { - println!("Writing README.md to \"{}\"", path.to_string_lossy()); + println!("Writing README.mdx to \"{}\"", path.to_string_lossy()); } write_file(path, README)?; } - // Generate root SUMMARY.md. + // Generate root SUMMARY.mdx. if args.root_summary { let root_summary: String = output .iter() @@ -166,7 +153,8 @@ fn main() -> io::Result<()> { if args.verbose { println!("Updating root summary in \"{}\"", path.to_string_lossy()); } - update_root_summary(path, &root_summary)?; + // TODO: This is where we update the cli reference sidebar.ts + // update_root_summary(path, &root_summary)?; } Ok(()) @@ -213,8 +201,7 @@ fn parse_sub_commands(s: &str) -> Vec { .lines() .take_while(|line| !line.starts_with("Options:") && !line.starts_with("Arguments:")) .filter_map(|line| { - re.captures(line) - .and_then(|cap| cap.get(1).map(|m| m.as_str().to_string())) + re.captures(line).and_then(|cap| cap.get(1).map(|m| m.as_str().to_string())) }) .filter(|cmd| cmd != "help") .map(String::from) @@ -229,7 +216,7 @@ fn cmd_markdown(out_dir: &Path, cmd: &Cmd, stdout: &str) -> io::Result<()> { let out_path = out_dir.join(cmd.to_string().replace(" ", "/")); fs::create_dir_all(out_path.parent().unwrap())?; - write_file(&out_path.with_extension("md"), &out)?; + write_file(&out_path.with_extension("mdx"), &out)?; Ok(()) } @@ -265,12 +252,12 @@ fn cmd_summary(md_root: Option, cmd: &Cmd, indent: usize) -> String { Some(md_root) => format!("{}/{}", md_root.to_string_lossy(), cmd_path), }; let indent_string = " ".repeat(indent + (cmd.subcommands.len() * 2)); - format!("{}- [`{}`](./{}.md)\n", indent_string, cmd_s, full_cmd_path) + format!("{}- [`{}`](/cli/{})\n", indent_string, cmd_s, full_cmd_path) } -/// Replaces the CLI_REFERENCE section in the root SUMMARY.md file. +/// Replaces the CLI_REFERENCE section in the root SUMMARY.mdx file. fn update_root_summary(root_dir: &Path, root_summary: &str) -> io::Result<()> { - let summary_file = root_dir.join("SUMMARY.md"); + let summary_file = root_dir.join("SUMMARY.mdx"); let original_summary_content = fs::read_to_string(&summary_file)?; let section_re = regex!(&format!(r"(?s)\s*{SECTION_START}.*?{SECTION_END}")); @@ -293,9 +280,8 @@ fn update_root_summary(root_dir: &Path, root_summary: &str) -> io::Result<()> { let root_summary_s = root_summary.trim_end().replace("\n\n", "\n"); let replace_with = format!(" {}\n{}\n{}", SECTION_START, root_summary_s, last_line); - let new_root_summary = section_re - .replace(&original_summary_content, replace_with.as_str()) - .to_string(); + let new_root_summary = + section_re.replace(&original_summary_content, replace_with.as_str()).to_string(); let mut root_summary_file = File::create(&summary_file)?; root_summary_file.write_all(new_root_summary.as_bytes()) @@ -349,17 +335,11 @@ struct Cmd<'a> { impl<'a> Cmd<'a> { fn command_name(&self) -> &str { - self.cmd - .file_name() - .and_then(|os_str| os_str.to_str()) - .expect("Expect valid command") + self.cmd.file_name().and_then(|os_str| os_str.to_str()).expect("Expect valid command") } fn new(cmd: &'a PathBuf) -> Self { - Self { - cmd, - subcommands: Vec::new(), - } + Self { cmd, subcommands: Vec::new() } } } diff --git a/book/cli/reth/debug/replay-engine.md b/book/cli/reth/debug/replay-engine.md deleted file mode 100644 index da36f11cc0..0000000000 --- a/book/cli/reth/debug/replay-engine.md +++ /dev/null @@ -1,332 +0,0 @@ -# reth debug replay-engine - -Debug engine API by replaying stored messages - -```bash -$ reth debug replay-engine --help -``` -```txt -Usage: reth debug replay-engine [OPTIONS] --engine-api-store - -Options: - --instance - Add a new instance of a node. - - Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine. - - Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other. - - Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2 - - [default: 1] - - -h, --help - Print help (see a summary with '-h') - -Datadir: - --datadir - The path to the data dir for all reth files and subdirectories. - - Defaults to the OS-specific data directory: - - - Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/` - - Windows: `{FOLDERID_RoamingAppData}/reth/` - - macOS: `$HOME/Library/Application Support/reth/` - - [default: default] - - --datadir.static-files - The absolute path to store static files in. - - --config - The path to the configuration file to use - - --chain - The chain this node is running. - Possible values are either a built-in chain or the path to a chain specification file. - - Built-in chains: - mainnet, sepolia, holesky, dev - - [default: mainnet] - -Database: - --db.log-level - Database logging level. Levels higher than "notice" require a debug build - - Possible values: - - fatal: Enables logging for critical conditions, i.e. assertion failures - - error: Enables logging for error conditions - - warn: Enables logging for warning conditions - - notice: Enables logging for normal but significant condition - - verbose: Enables logging for verbose informational - - debug: Enables logging for debug-level messages - - trace: Enables logging for trace debug-level messages - - extra: Enables logging for extra debug-level messages - - --db.exclusive - Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume - - [possible values: true, false] - - --db.max-size - Maximum database size (e.g., 4TB, 8MB) - - --db.growth-step - Database growth step (e.g., 4GB, 4KB) - - --db.read-transaction-timeout - Read transaction timeout in seconds, 0 means no timeout - -Networking: - -d, --disable-discovery - Disable the discovery service - - --disable-dns-discovery - Disable the DNS discovery - - --disable-discv4-discovery - Disable Discv4 discovery - - --enable-discv5-discovery - Enable Discv5 discovery - - --disable-nat - Disable Nat discovery - - --discovery.addr - The UDP address to use for devp2p peer discovery version 4 - - [default: 0.0.0.0] - - --discovery.port - The UDP port to use for devp2p peer discovery version 4 - - [default: 30303] - - --discovery.v5.addr - The UDP IPv4 address to use for devp2p peer discovery version 5. Overwritten by `RLPx` address, if it's also IPv4 - - --discovery.v5.addr.ipv6 - The UDP IPv6 address to use for devp2p peer discovery version 5. Overwritten by `RLPx` address, if it's also IPv6 - - --discovery.v5.port - The UDP IPv4 port to use for devp2p peer discovery version 5. Not used unless `--addr` is IPv4, or `--discovery.v5.addr` is set - - [default: 9200] - - --discovery.v5.port.ipv6 - The UDP IPv6 port to use for devp2p peer discovery version 5. Not used unless `--addr` is IPv6, or `--discovery.addr.ipv6` is set - - [default: 9200] - - --discovery.v5.lookup-interval - The interval in seconds at which to carry out periodic lookup queries, for the whole run of the program - - [default: 20] - - --discovery.v5.bootstrap.lookup-interval - The interval in seconds at which to carry out boost lookup queries, for a fixed number of times, at bootstrap - - [default: 5] - - --discovery.v5.bootstrap.lookup-countdown - The number of times to carry out boost lookup queries at bootstrap - - [default: 200] - - --trusted-peers - Comma separated enode URLs of trusted peers for P2P connections. - - --trusted-peers enode://abcd@192.168.0.1:30303 - - --trusted-only - Connect to or accept from trusted peers only - - --bootnodes - Comma separated enode URLs for P2P discovery bootstrap. - - Will fall back to a network-specific default if not specified. - - --dns-retries - Amount of DNS resolution requests retries to perform when peering - - [default: 0] - - --peers-file - The path to the known peers file. Connected peers are dumped to this file on nodes - shutdown, and read on startup. Cannot be used with `--no-persist-peers`. - - --identity - Custom node identity - - [default: reth/-/] - - --p2p-secret-key - Secret key to use for this node. - - This will also deterministically set the peer ID. If not specified, it will be set in the data dir for the chain being used. - - --no-persist-peers - Do not persist peers. - - --nat - NAT resolution method (any|none|upnp|publicip|extip:\) - - [default: any] - - --addr - Network listening address - - [default: 0.0.0.0] - - --port - Network listening port - - [default: 30303] - - --max-outbound-peers - Maximum number of outbound requests. default: 100 - - --max-inbound-peers - Maximum number of inbound requests. default: 30 - - --max-tx-reqs - Max concurrent `GetPooledTransactions` requests. - - [default: 130] - - --max-tx-reqs-peer - Max concurrent `GetPooledTransactions` requests per peer. - - [default: 1] - - --max-seen-tx-history - Max number of seen transactions to remember per peer. - - Default is 320 transaction hashes. - - [default: 320] - - --max-pending-imports - Max number of transactions to import concurrently. - - [default: 4096] - - --pooled-tx-response-soft-limit - Experimental, for usage in research. Sets the max accumulated byte size of transactions - to pack in one response. - Spec'd at 2MiB. - - [default: 2097152] - - --pooled-tx-pack-soft-limit - Experimental, for usage in research. Sets the max accumulated byte size of transactions to - request in one request. - - Since `RLPx` protocol version 68, the byte size of a transaction is shared as metadata in a - transaction announcement (see `RLPx` specs). This allows a node to request a specific size - response. - - By default, nodes request only 128 KiB worth of transactions, but should a peer request - more, up to 2 MiB, a node will answer with more than 128 KiB. - - Default is 128 KiB. - - [default: 131072] - - --max-tx-pending-fetch - Max capacity of cache of hashes for transactions pending fetch. - - [default: 25600] - - --net-if.experimental - Name of network interface used to communicate with peers. - - If flag is set, but no value is passed, the default interface for docker `eth0` is tried. - - --engine-api-store - The path to read engine API messages from - - --interval - The number of milliseconds between Engine API messages - - [default: 1000] - -Logging: - --log.stdout.format - The format to use for logs written to stdout - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.stdout.filter - The filter to use for logs written to stdout - - [default: ] - - --log.file.format - The format to use for logs written to the log file - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.file.filter - The filter to use for logs written to the log file - - [default: debug] - - --log.file.directory - The path to put log files in - - [default: /logs] - - --log.file.max-size - The maximum size (in MB) of one log file - - [default: 200] - - --log.file.max-files - The maximum amount of log files that will be stored. If set to 0, background file logging is disabled - - [default: 5] - - --log.journald - Write logs to journald - - --log.journald.filter - The filter to use for logs written to journald - - [default: error] - - --color - Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting - - [default: always] - - Possible values: - - always: Colors on - - auto: Colors on - - never: Colors off - -Display: - -v, --verbosity... - Set the minimum log level. - - -v Errors - -vv Warnings - -vvv Info - -vvvv Debug - -vvvvv Traces (warning: very verbose!) - - -q, --quiet - Silence all log output -``` \ No newline at end of file diff --git a/book/cli/reth/import-op.md b/book/cli/reth/import-op.md deleted file mode 100644 index d2d81980ce..0000000000 --- a/book/cli/reth/import-op.md +++ /dev/null @@ -1,134 +0,0 @@ -# op-reth import - -This syncs RLP encoded blocks from a file. Supports import of OVM blocks -from the Bedrock datadir. Requires blocks, up to same height as receipts -file, to already be imported. - -```bash -$ op-reth import-op --help -Usage: op-reth import-op [OPTIONS] - -Options: - --config - The path to the configuration file to use. - - --datadir - The path to the data dir for all reth files and subdirectories. - - Defaults to the OS-specific data directory: - - - Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/` - - Windows: `{FOLDERID_RoamingAppData}/reth/` - - macOS: `$HOME/Library/Application Support/reth/` - - [default: default] - - --chunk-len - Chunk byte length to read from file. - - [default: 1GB] - - -h, --help - Print help (see a summary with '-h') - -Database: - --db.log-level - Database logging level. Levels higher than "notice" require a debug build - - Possible values: - - fatal: Enables logging for critical conditions, i.e. assertion failures - - error: Enables logging for error conditions - - warn: Enables logging for warning conditions - - notice: Enables logging for normal but significant condition - - verbose: Enables logging for verbose informational - - debug: Enables logging for debug-level messages - - trace: Enables logging for trace debug-level messages - - extra: Enables logging for extra debug-level messages - - --db.exclusive - Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume - - [possible values: true, false] - - - The path to a `.rlp` block file for import. - - The online sync pipeline stages (headers and bodies) are replaced by a file import. Skips block execution since blocks below Bedrock are built on OVM. - -Logging: - --log.stdout.format - The format to use for logs written to stdout - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.stdout.filter - The filter to use for logs written to stdout - - [default: ] - - --log.file.format - The format to use for logs written to the log file - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.file.filter - The filter to use for logs written to the log file - - [default: debug] - - --log.file.directory - The path to put log files in - - [default: /logs] - - --log.file.max-size - The maximum size (in MB) of one log file - - [default: 200] - - --log.file.max-files - The maximum amount of log files that will be stored. If set to 0, background file logging is disabled - - [default: 5] - - --log.journald - Write logs to journald - - --log.journald.filter - The filter to use for logs written to journald - - [default: error] - - --color - Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting - - [default: always] - - Possible values: - - always: Colors on - - auto: Colors on - - never: Colors off - -Display: - -v, --verbosity... - Set the minimum log level. - - -v Errors - -vv Warnings - -vvv Info - -vvvv Debug - -vvvvv Traces (warning: very verbose!) - - -q, --quiet - Silence all log output -``` \ No newline at end of file diff --git a/book/cli/reth/import-receipts-op.md b/book/cli/reth/import-receipts-op.md deleted file mode 100644 index 0b7135e1d7..0000000000 --- a/book/cli/reth/import-receipts-op.md +++ /dev/null @@ -1,133 +0,0 @@ -# op-reth import-receipts-op - -This imports non-standard RLP encoded receipts from a file. -The supported RLP encoding, is the non-standard encoding used -for receipt export in . -Supports import of OVM receipts from the Bedrock datadir. - -```bash -$ op-reth import-receipts-op --help -Usage: op-reth import-receipts-op [OPTIONS] - -Options: - --datadir - The path to the data dir for all reth files and subdirectories. - - Defaults to the OS-specific data directory: - - - Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/` - - Windows: `{FOLDERID_RoamingAppData}/reth/` - - macOS: `$HOME/Library/Application Support/reth/` - - [default: default] - - --chunk-len - Chunk byte length to read from file. - - [default: 1GB] - - -h, --help - Print help (see a summary with '-h') - -Database: - --db.log-level - Database logging level. Levels higher than "notice" require a debug build - - Possible values: - - fatal: Enables logging for critical conditions, i.e. assertion failures - - error: Enables logging for error conditions - - warn: Enables logging for warning conditions - - notice: Enables logging for normal but significant condition - - verbose: Enables logging for verbose informational - - debug: Enables logging for debug-level messages - - trace: Enables logging for trace debug-level messages - - extra: Enables logging for extra debug-level messages - - --db.exclusive - Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume - - [possible values: true, false] - - - The path to a receipts file for import. File must use `OpGethReceiptFileCodec` (used for - exporting OP chain segment below Bedrock block via testinprod/op-geth). - - - -Logging: - --log.stdout.format - The format to use for logs written to stdout - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.stdout.filter - The filter to use for logs written to stdout - - [default: ] - - --log.file.format - The format to use for logs written to the log file - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.file.filter - The filter to use for logs written to the log file - - [default: debug] - - --log.file.directory - The path to put log files in - - [default: /logs] - - --log.file.max-size - The maximum size (in MB) of one log file - - [default: 200] - - --log.file.max-files - The maximum amount of log files that will be stored. If set to 0, background file logging is disabled - - [default: 5] - - --log.journald - Write logs to journald - - --log.journald.filter - The filter to use for logs written to journald - - [default: error] - - --color - Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting - - [default: always] - - Possible values: - - always: Colors on - - auto: Colors on - - never: Colors off - -Display: - -v, --verbosity... - Set the minimum log level. - - -v Errors - -vv Warnings - -vvv Info - -vvvv Debug - -vvvvv Traces (warning: very verbose!) - - -q, --quiet - Silence all log output -``` \ No newline at end of file diff --git a/book/cli/reth/test-vectors.md b/book/cli/reth/test-vectors.md deleted file mode 100644 index 844c5ed845..0000000000 --- a/book/cli/reth/test-vectors.md +++ /dev/null @@ -1,113 +0,0 @@ -# reth test-vectors - -Generate Test Vectors - -```bash -$ reth test-vectors --help -Usage: reth test-vectors [OPTIONS] - -Commands: - tables Generates test vectors for specified tables. If no table is specified, generate for all - help Print this message or the help of the given subcommand(s) - -Options: - --chain - The chain this node is running. - Possible values are either a built-in chain or the path to a chain specification file. - - Built-in chains: - mainnet, sepolia, holesky, dev - - [default: mainnet] - - --instance - Add a new instance of a node. - - Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine. - - Max number of instances is 200. It is chosen in a way so that it's not possible to have port numbers that conflict with each other. - - Changes to the following port numbers: - `DISCOVERY_PORT`: default + `instance` - 1 - `AUTH_PORT`: default + `instance` * 100 - 100 - `HTTP_RPC_PORT`: default - `instance` + 1 - `WS_RPC_PORT`: default + `instance` * 2 - 2 - - [default: 1] - - -h, --help - Print help (see a summary with '-h') - -Logging: - --log.stdout.format - The format to use for logs written to stdout - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.stdout.filter - The filter to use for logs written to stdout - - [default: ] - - --log.file.format - The format to use for logs written to the log file - - [default: terminal] - - Possible values: - - json: Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging - - log-fmt: Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications - - terminal: Represents terminal-friendly formatting for logs - - --log.file.filter - The filter to use for logs written to the log file - - [default: debug] - - --log.file.directory - The path to put log files in - - [default: /logs] - - --log.file.max-size - The maximum size (in MB) of one log file - - [default: 200] - - --log.file.max-files - The maximum amount of log files that will be stored. If set to 0, background file logging is disabled - - [default: 5] - - --log.journald - Write logs to journald - - --log.journald.filter - The filter to use for logs written to journald - - [default: error] - - --color - Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting - - [default: always] - - Possible values: - - always: Colors on - - auto: Colors on - - never: Colors off - -Display: - -v, --verbosity... - Set the minimum log level. - - -v Errors - -vv Warnings - -vvv Info - -vvvv Debug - -vvvvv Traces (warning: very verbose!) - - -q, --quiet - Silence all log output -``` \ No newline at end of file diff --git a/book/cli/update.sh b/book/cli/update.sh index 6e792df0f2..01593bfb79 100755 --- a/book/cli/update.sh +++ b/book/cli/update.sh @@ -3,13 +3,18 @@ set -eo pipefail BOOK_ROOT="$(dirname "$(dirname "$0")")" RETH=${1:-"$(dirname "$BOOK_ROOT")/target/debug/reth"} +VOCS_PAGES_ROOT="$BOOK_ROOT/vocs/docs/pages" +echo "Generating CLI documentation for reth at $RETH" +echo "Using book root: $BOOK_ROOT" +echo "Using vocs pages root: $VOCS_PAGES_ROOT" cmd=( "$(dirname "$0")/help.rs" --root-dir "$BOOK_ROOT/" --root-indentation 2 --root-summary - --out-dir "$BOOK_ROOT/cli/" + --verbose + --out-dir "$VOCS_PAGES_ROOT/cli/" "$RETH" ) echo "Running: $" "${cmd[*]}" diff --git a/book/developers/contribute.md b/book/developers/contribute.md deleted file mode 100644 index 74f00e69a1..0000000000 --- a/book/developers/contribute.md +++ /dev/null @@ -1,9 +0,0 @@ -# Contribute - - - -Reth has docs specifically geared for developers and contributors, including documentation on the structure and architecture of reth, the general workflow we employ, and other useful tips. - -You can find these docs [here](https://github.com/paradigmxyz/reth/tree/main/docs). - -Check out our contributing guidelines [here](https://github.com/paradigmxyz/reth/blob/main/CONTRIBUTING.md). diff --git a/book/developers/developers.md b/book/developers/developers.md deleted file mode 100644 index 9d8c5a9c67..0000000000 --- a/book/developers/developers.md +++ /dev/null @@ -1,3 +0,0 @@ -# Developers - -Reth is composed of several crates that can be used in standalone projects. If you are interested in using one or more of the crates, you can get an overview of them in the [developer docs](https://github.com/paradigmxyz/reth/tree/main/docs), or take a look at the [crate docs](https://paradigmxyz.github.io/reth/docs). diff --git a/book/installation/priorities.md b/book/installation/priorities.md deleted file mode 100644 index f7444e79d6..0000000000 --- a/book/installation/priorities.md +++ /dev/null @@ -1,18 +0,0 @@ -# Update Priorities - -When publishing releases, reth will include an "Update Priority" section in the release notes, in the same manner Lighthouse does. - -The "Update Priority" section will include a table which may appear like so: - -| User Class | Priority | -|----------------------|-----------------| -| Payload Builders | Medium Priority | -| Non-Payload Builders | Low Priority | - -To understand this table, the following terms are important: - -- *Payload builders* are those who use reth to build and validate payloads. -- *Non-payload builders* are those who run reth for other purposes (e.g., data analysis, RPC or applications). -- *High priority* updates should be completed as soon as possible (e.g., hours or days). -- *Medium priority* updates should be completed at the next convenience (e.g., days or a week). -- *Low priority* updates should be completed in the next routine update cycle (e.g., two weeks). diff --git a/book/run/ports.md b/book/run/ports.md deleted file mode 100644 index 5239a5262c..0000000000 --- a/book/run/ports.md +++ /dev/null @@ -1,38 +0,0 @@ -# Ports - -This section provides essential information about the ports used by the system, their primary purposes, and recommendations for exposure settings. - -## Peering Ports - -- **Port:** 30303 -- **Protocol:** TCP and UDP -- **Purpose:** Peering with other nodes for synchronization of blockchain data. Nodes communicate through this port to maintain network consensus and share updated information. -- **Exposure Recommendation:** This port should be exposed to enable seamless interaction and synchronization with other nodes in the network. - -## Metrics Port - -- **Port:** 9001 -- **Protocol:** TCP -- **Purpose:** This port is designated for serving metrics related to the system's performance and operation. It allows internal monitoring and data collection for analysis. -- **Exposure Recommendation:** By default, this port should not be exposed to the public. It is intended for internal monitoring and analysis purposes. - -## HTTP RPC Port - -- **Port:** 8545 -- **Protocol:** TCP -- **Purpose:** Port 8545 provides an HTTP-based Remote Procedure Call (RPC) interface. It enables external applications to interact with the blockchain by sending requests over HTTP. -- **Exposure Recommendation:** Similar to the metrics port, exposing this port to the public is not recommended by default due to security considerations. - -## WS RPC Port - -- **Port:** 8546 -- **Protocol:** TCP -- **Purpose:** Port 8546 offers a WebSocket-based Remote Procedure Call (RPC) interface. It allows real-time communication between external applications and the blockchain. -- **Exposure Recommendation:** As with the HTTP RPC port, the WS RPC port should not be exposed by default for security reasons. - -## Engine API Port - -- **Port:** 8551 -- **Protocol:** TCP -- **Purpose:** Port 8551 facilitates communication between specific components, such as "reth" and "CL" (assuming their definitions are understood within the context of the system). It enables essential internal processes. -- **Exposure Recommendation:** This port is not meant to be exposed to the public by default. It should be reserved for internal communication between vital components of the system. diff --git a/book/run/run-a-node.md b/book/run/run-a-node.md deleted file mode 100644 index d8981e1552..0000000000 --- a/book/run/run-a-node.md +++ /dev/null @@ -1,15 +0,0 @@ -# Run a Node - -Congratulations, now that you have installed Reth, it's time to run it! - -In this chapter we'll go through a few different topics you'll encounter when running Reth, including: -1. [Running on mainnet or official testnets](./mainnet.md) -1. [Running on OP Stack chains](./optimism.md) -1. [Logs and Observability](./observability.md) -1. [Configuring reth.toml](./config.md) -1. [Transaction types](./transactions.md) -1. [Pruning & Full Node](./pruning.md) -1. [Ports](./ports.md) -1. [Troubleshooting](./troubleshooting.md) - -In the future, we also intend to support the [OP Stack](https://docs.optimism.io/get-started/superchain), which will allow you to run Reth as a Layer 2 client. More there soon! diff --git a/book/templates/source_and_github.md b/book/templates/source_and_github.md deleted file mode 100644 index c4abbaa389..0000000000 --- a/book/templates/source_and_github.md +++ /dev/null @@ -1,4 +0,0 @@ -[File: [[ #path ]]](https://github.com/paradigmxyz/reth/blob/main/[[ #path ]]) -```rust,no_run,noplayground -{{#include [[ #path_to_root ]][[ #path ]]:[[ #anchor ]]}} -``` \ No newline at end of file diff --git a/book/theme/head.hbs b/book/theme/head.hbs deleted file mode 100644 index 37667d80f6..0000000000 --- a/book/theme/head.hbs +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/book/vocs/CLAUDE.md b/book/vocs/CLAUDE.md new file mode 100644 index 0000000000..98b57a5791 --- /dev/null +++ b/book/vocs/CLAUDE.md @@ -0,0 +1,103 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is the **Reth documentation website** built with [Vocs](https://vocs.dev), a modern documentation framework. The site contains comprehensive documentation for Reth, the Ethereum execution client, including installation guides, CLI references, SDK documentation, and tutorials. + +## Repository Structure + +- **`docs/pages/`**: All documentation content in MDX format + - `cli/`: Command-line interface documentation and references + - `exex/`: Execution Extensions (ExEx) guides and examples + - `installation/`: Installation and setup guides + - `introduction/`: Introduction, benchmarks, and why-reth content + - `jsonrpc/`: JSON-RPC API documentation + - `run/`: Node running guides and configuration + - `sdk/`: SDK documentation and examples +- **`docs/snippets/`**: Code examples and snippets used in documentation +- **`sidebar.ts`**: Navigation configuration +- **`vocs.config.ts`**: Vocs configuration file + +## Essential Commands + +```bash +# Install dependencies +bun install + +# Start development server +bun run dev + +# Build for production +bun run build + +# Preview production build +bun run preview +``` + +## Development Workflow + +### Content Organization + +1. **MDX Files**: All content is written in MDX (Markdown + React components) +2. **Navigation**: Update `sidebar.ts` when adding new pages +3. **Code Examples**: Place reusable code snippets in `docs/snippets/` +4. **Assets**: Place images and static assets in `docs/public/` + +### Adding New Documentation + +1. Create new `.mdx` files in appropriate subdirectories under `docs/pages/` +2. Update `sidebar.ts` to include new pages in navigation +3. Use consistent heading structure and markdown formatting +4. Reference code examples from `docs/snippets/` when possible + +### Code Examples and Snippets + +- **Live Examples**: Use the snippets system to include actual runnable code +- **Rust Code**: Include cargo project examples in `docs/snippets/sources/` +- **CLI Examples**: Show actual command usage with expected outputs + +### Configuration + +- **Base Path**: Site deploys to `/reth` path (configured in `vocs.config.ts`) +- **Theme**: Custom accent colors for light/dark themes +- **Vite**: Uses Vite as the underlying build tool + +### Content Guidelines + +1. **Be Practical**: Focus on actionable guides and real-world examples +2. **Code First**: Show working code examples before explaining concepts +3. **Consistent Structure**: Follow existing page structures for consistency +4. **Cross-References**: Link between related pages and sections +5. **Keep Current**: Ensure documentation matches latest Reth features + +### File Naming Conventions + +- Use kebab-case for file and directory names +- Match URL structure to file structure +- Use descriptive names that reflect content purpose + +### Common Tasks + +**Adding a new CLI command documentation:** +1. Create `.mdx` file in `docs/pages/cli/reth/` +2. Add to sidebar navigation +3. Include usage examples and parameter descriptions + +**Adding a new guide:** +1. Create `.mdx` file in appropriate category +2. Update sidebar with new entry +3. Include practical examples and next steps + +**Updating code examples:** +1. Modify files in `docs/snippets/sources/` +2. Ensure examples compile and run correctly +3. Test that documentation references work properly + +## Development Notes + +- This is a TypeScript/React project using Vocs framework +- Content is primarily MDX with some TypeScript configuration +- Focus on clear, practical documentation that helps users succeed with Reth +- Maintain consistency with existing documentation style and structure \ No newline at end of file diff --git a/book/vocs/README.md b/book/vocs/README.md new file mode 100644 index 0000000000..3bb11a44a0 --- /dev/null +++ b/book/vocs/README.md @@ -0,0 +1 @@ +This is a [Vocs](https://vocs.dev) project bootstrapped with the Vocs CLI. diff --git a/book/vocs/bun.lockb b/book/vocs/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..0f15cd4dc666167798797dafba290536329e65f4 GIT binary patch literal 302056 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

V<#{?GOQ$CU@VX=Ha*`CD6*hdaTaC+Ok)2P9CJ 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

5u(B-`{=RYrowO$UwKM+WIch&`%U1 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 + summary: { + brokenCount: number; + validCount: number; + }; +} + +main(); + +async function main() { + try { + const report = await checkLinks(); + await saveReport(report); + displayResults(report); + + process.exit(report.summary.brokenCount > 0 ? 1 : 0); + } catch (error) { + console.error("\n❌ Fatal error during link checking:"); + + if (error instanceof Error) { + console.error(` ${error.message}`); + if (error.stack) { + [console.error("\nStack trace:"), console.error(error.stack)]; + } + } else console.error(error); + + process.exit(2); + } +} + +async function checkLinks(): Promise { + console.log("🔍 Finding markdown files..."); + const files = await getAllMarkdownFiles(); + console.log(`📄 Found ${files.length} markdown files`); + + console.log("🔍 Finding public assets..."); + const publicAssets = await getAllPublicAssets(); + console.log(`🖼️ Found ${publicAssets.length} public assets`); + + console.log("🗺️ Building file path map..."); + const pathMap = buildFilePathMap(files, publicAssets); + console.log(`📍 Mapped ${pathMap.size} possible paths`); + + const brokenLinks: BrokenLink[] = []; + let totalLinks = 0; + + console.log("🔗 Checking links in files..."); + + for (let index = 0; index < files.length; index++) { + const file = files[index]; + + try { + const content = readFileSync(file, "utf-8"); + const links = extractLinksFromMarkdown(content); + + for (const { link, line } of links) { + totalLinks++; + const error = validateLink(link, file, pathMap); + + if (error) { + brokenLinks.push({ + file: relative(process.cwd(), file), + link, + line, + reason: error, + }); + } + } + } catch (error) { + console.error(`\nError reading ${file}:`, error); + } + } + + console.log("\n✅ Link checking complete!"); + + return { + timestamp: new Date().toISOString(), + totalFiles: files.length, + totalLinks, + brokenLinks, + summary: { + brokenCount: brokenLinks.length, + validCount: totalLinks - brokenLinks.length, + }, + }; +} + +async function getAllMarkdownFiles(): Promise { + const glob = new Glob(CONFIG.FILE_PATTERNS); + const files = await Array.fromAsync(glob.scan({ cwd: CONFIG.DOCS_DIR })); + return files.map((file) => join(CONFIG.DOCS_DIR, file)); +} + +async function getAllPublicAssets(): Promise { + const glob = new Glob("**/*"); + const files = await Array.fromAsync(glob.scan({ cwd: CONFIG.PUBLIC_DIR })); + return files; +} + +function buildFilePathMap( + files: Array, + publicAssets: Array, +): Set { + const pathMap = new Set(); + + const addPath = (path: string) => { + if (path && typeof path === "string") pathMap.add(path); + }; + + for (const file of files) { + const relativePath = relative(CONFIG.DOCS_DIR, file); + + addPath(relativePath); + + const withoutExt = relativePath.replace(CONFIG.MARKDOWN_EXTENSIONS, ""); + addPath(withoutExt); + + if (withoutExt.endsWith("/index")) + addPath(withoutExt.replace("/index", "")); + + addPath(`/${withoutExt}`); + if (withoutExt.endsWith("/index")) + addPath(`/${withoutExt.replace("/index", "")}`); + } + + for (const asset of publicAssets) addPath(`/${asset}`); + + return pathMap; +} + +function extractLinksFromMarkdown( + content: string, +): Array<{ link: string; line: number }> { + const lines = content.split("\n"); + const links: Array<{ link: string; line: number }> = []; + let inCodeBlock = false; + + for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) { + const line = lines[lineIndex]; + const lineNumber = lineIndex + 1; + + // Toggle code block state + if (line.trim().startsWith("```")) { + inCodeBlock = !inCodeBlock; + continue; + } + + if (inCodeBlock) continue; + + const processedLine = line + .split("`") + .filter((_, index) => index % 2 === 0) + .join(""); + + links.push(...extractMarkdownLinks(processedLine, lineNumber)); + links.push(...extractHtmlLinks(processedLine, lineNumber)); + } + + return links; +} + +function extractMarkdownLinks( + line: string, + lineNumber: number, +): Array<{ link: string; line: number }> { + const regex = /\[([^\]]*)\]\(([^)]+)\)/g; + return [...line.matchAll(regex)] + .map(([, , url]) => ({ link: url, line: lineNumber })) + .filter(({ link }) => isInternalLink(link)); +} + +function extractHtmlLinks( + line: string, + lineNumber: number, +): Array<{ link: string; line: number }> { + const regex = /]+href=["']([^"']+)["'][^>]*>/g; + return [...line.matchAll(regex)] + .map(([, url]) => ({ link: url, line: lineNumber })) + .filter(({ link }) => isInternalLink(link)); +} + +function isInternalLink(url: string): boolean { + return ( + !url.startsWith("http") && + !url.startsWith("mailto:") && + !url.startsWith("#") + ); +} + +function validateLink( + link: string, + sourceFile: string, + pathMap: Set, +): string | null { + const [linkPath] = link.split("#"); + if (!linkPath) return null; // Pure anchor link + + if (linkPath.startsWith("/")) return validateAbsolutePath(linkPath, pathMap); + return validateRelativePath(linkPath, sourceFile, pathMap); +} + +function validateAbsolutePath( + linkPath: string, + pathMap: Set, +): string | null { + const variations = [ + linkPath, + linkPath.slice(1), // Remove leading slash + linkPath.replace(/\/$/, ""), // Remove trailing slash + linkPath + .slice(1) + .replace(/\/$/, ""), // Remove both + ]; + + return variations.some((path) => pathMap.has(path)) + ? null + : `Absolute path not found: ${linkPath}`; +} + +function validateRelativePath( + linkPath: string, + sourceFile: string, + pathMap: Set, +): string | null { + const sourceDir = dirname(relative(CONFIG.DOCS_DIR, sourceFile)); + const resolvedPath = resolve(sourceDir, linkPath); + const normalizedPath = relative(".", resolvedPath); + + const variations = [ + linkPath, + normalizedPath, + `/${normalizedPath}`, + normalizedPath.replace(CONFIG.MARKDOWN_EXTENSIONS, ""), + `/${normalizedPath.replace(CONFIG.MARKDOWN_EXTENSIONS, "")}`, + ]; + + return variations.some((path) => pathMap.has(path)) + ? null + : `Relative path not found: ${linkPath} (resolved to: ${normalizedPath})`; +} + +async function saveReport(report: LinkCheckReport) { + try { + await Bun.write(CONFIG.REPORT_PATH, JSON.stringify(report, null, 2)); + console.log(`\n📝 Report saved to: ${CONFIG.REPORT_PATH}`); + } catch (error) { + console.error( + `\n⚠️ Warning: Failed to save report to ${CONFIG.REPORT_PATH}`, + ); + console.error(error); + } +} + +function displayResults(report: LinkCheckReport) { + LinkCheckReporter.printSummary(report); + + if (report.brokenLinks.length > 0) + LinkCheckReporter.printBrokenLinks(report.brokenLinks); + else console.log("\n✅ All links are valid!"); +} + +const LinkCheckReporter = { + printSummary: (report: LinkCheckReport) => { + console.log("\n📊 Link Check Summary:"); + console.log(` 📄 Files checked: ${report.totalFiles}`); + console.log(` 🔗 Total links: ${report.totalLinks}`); + console.log(` ✅ Valid links: ${report.summary.validCount}`); + console.log(` ❌ Broken links: ${report.summary.brokenCount}`); + }, + printBrokenLinks: (brokenLinks: Array) => { + if (brokenLinks.length === 0) return; + + console.log("\n❌ Broken Links Found:\n"); + + const byFile = brokenLinks.reduce( + (acc, broken) => { + if (!acc[broken.file]) acc[broken.file] = []; + acc[broken.file].push(broken); + return acc; + }, + {} as Record, + ); + + for (const [file, links] of Object.entries(byFile)) { + console.log(`📄 ${file}:`); + for (const broken of links) { + console.log(` Line ${broken.line}: ${broken.link}`); + console.log(` └─ ${broken.reason}\n`); + } + } + }, +}; \ No newline at end of file diff --git a/book/vocs/docs/components/SdkShowcase.tsx b/book/vocs/docs/components/SdkShowcase.tsx new file mode 100644 index 0000000000..14a1f491b8 --- /dev/null +++ b/book/vocs/docs/components/SdkShowcase.tsx @@ -0,0 +1,88 @@ +import React from 'react' + +interface SdkProject { + name: string + description: string + loc: string + githubUrl: string + logoUrl?: string + company: string +} + +const projects: SdkProject[] = [ + { + name: 'Base Node', + description: "Coinbase's L2 scaling solution node implementation", + loc: '~3K', + githubUrl: 'https://github.com/base/node-reth', + company: 'Coinbase' + }, + { + name: 'Bera Reth', + description: "Berachain's high-performance EVM node with custom features", + loc: '~1K', + githubUrl: 'https://github.com/berachain/bera-reth', + company: 'Berachain' + }, + { + name: 'Reth Gnosis', + description: "Gnosis Chain's xDai-compatible execution client", + loc: '~5K', + githubUrl: 'https://github.com/gnosischain/reth_gnosis', + company: 'Gnosis' + }, + { + name: 'Reth BSC', + description: "BNB Smart Chain execution client implementation", + loc: '~6K', + githubUrl: 'https://github.com/loocapro/reth-bsc', + company: 'LooCa Protocol' + } +] + +export function SdkShowcase() { + return ( +

+ ) +} \ No newline at end of file diff --git a/book/vocs/docs/components/TrustedBy.tsx b/book/vocs/docs/components/TrustedBy.tsx new file mode 100644 index 0000000000..fdda21d0a0 --- /dev/null +++ b/book/vocs/docs/components/TrustedBy.tsx @@ -0,0 +1,49 @@ +import React from 'react' + +interface TrustedCompany { + name: string + logoUrl: string +} + +const companies: TrustedCompany[] = [ + { + name: 'Flashbots', + logoUrl: '/reth/flashbots.png' + }, + { + name: 'Coinbase', + logoUrl: '/reth/coinbase.png' + }, + { + name: 'Alchemy', + logoUrl: '/reth/alchemy.png' + }, + { + name: 'Succinct Labs', + logoUrl: '/reth/succinct.png' + } +] + +export function TrustedBy() { + return ( +
+ {companies.map((company, index) => ( +
+ {/* Company Logo */} +
+ {`${company.name} +
+
+ ))} +
+ ) +} \ No newline at end of file diff --git a/book/vocs/docs/pages/cli/SUMMARY.mdx b/book/vocs/docs/pages/cli/SUMMARY.mdx new file mode 100644 index 0000000000..330f32b3fd --- /dev/null +++ b/book/vocs/docs/pages/cli/SUMMARY.mdx @@ -0,0 +1,47 @@ +- [`reth`](/cli/reth) + - [`reth node`](/cli/reth/node) + - [`reth init`](/cli/reth/init) + - [`reth init-state`](/cli/reth/init-state) + - [`reth import`](/cli/reth/import) + - [`reth import-era`](/cli/reth/import-era) + - [`reth dump-genesis`](/cli/reth/dump-genesis) + - [`reth db`](/cli/reth/db) + - [`reth db stats`](/cli/reth/db/stats) + - [`reth db list`](/cli/reth/db/list) + - [`reth db checksum`](/cli/reth/db/checksum) + - [`reth db diff`](/cli/reth/db/diff) + - [`reth db get`](/cli/reth/db/get) + - [`reth db get mdbx`](/cli/reth/db/get/mdbx) + - [`reth db get static-file`](/cli/reth/db/get/static-file) + - [`reth db drop`](/cli/reth/db/drop) + - [`reth db clear`](/cli/reth/db/clear) + - [`reth db clear mdbx`](/cli/reth/db/clear/mdbx) + - [`reth db clear static-file`](/cli/reth/db/clear/static-file) + - [`reth db version`](/cli/reth/db/version) + - [`reth db path`](/cli/reth/db/path) + - [`reth download`](/cli/reth/download) + - [`reth stage`](/cli/reth/stage) + - [`reth stage run`](/cli/reth/stage/run) + - [`reth stage drop`](/cli/reth/stage/drop) + - [`reth stage dump`](/cli/reth/stage/dump) + - [`reth stage dump execution`](/cli/reth/stage/dump/execution) + - [`reth stage dump storage-hashing`](/cli/reth/stage/dump/storage-hashing) + - [`reth stage dump account-hashing`](/cli/reth/stage/dump/account-hashing) + - [`reth stage dump merkle`](/cli/reth/stage/dump/merkle) + - [`reth stage unwind`](/cli/reth/stage/unwind) + - [`reth stage unwind to-block`](/cli/reth/stage/unwind/to-block) + - [`reth stage unwind num-blocks`](/cli/reth/stage/unwind/num-blocks) + - [`reth p2p`](/cli/reth/p2p) + - [`reth p2p header`](/cli/reth/p2p/header) + - [`reth p2p body`](/cli/reth/p2p/body) + - [`reth p2p rlpx`](/cli/reth/p2p/rlpx) + - [`reth p2p rlpx ping`](/cli/reth/p2p/rlpx/ping) + - [`reth config`](/cli/reth/config) + - [`reth debug`](/cli/reth/debug) + - [`reth debug execution`](/cli/reth/debug/execution) + - [`reth debug merkle`](/cli/reth/debug/merkle) + - [`reth debug in-memory-merkle`](/cli/reth/debug/in-memory-merkle) + - [`reth debug build-block`](/cli/reth/debug/build-block) + - [`reth recover`](/cli/reth/recover) + - [`reth recover storage-tries`](/cli/reth/recover/storage-tries) + - [`reth prune`](/cli/reth/prune) diff --git a/book/cli/cli.md b/book/vocs/docs/pages/cli/cli.mdx similarity index 83% rename from book/cli/cli.md rename to book/vocs/docs/pages/cli/cli.mdx index ef1a98af52..20046ce9e7 100644 --- a/book/cli/cli.md +++ b/book/vocs/docs/pages/cli/cli.mdx @@ -1,7 +1,9 @@ +import Summary from './SUMMARY.mdx'; + # CLI Reference The Reth node is operated via the CLI by running the `reth node` command. To stop it, press `ctrl-c`. You may need to wait a bit as Reth tears down existing p2p connections or other cleanup tasks. However, Reth has more commands: -{{#include ./SUMMARY.md}} + diff --git a/book/cli/op-reth.md b/book/vocs/docs/pages/cli/op-reth.md similarity index 100% rename from book/cli/op-reth.md rename to book/vocs/docs/pages/cli/op-reth.md diff --git a/book/cli/reth.md b/book/vocs/docs/pages/cli/reth.mdx similarity index 100% rename from book/cli/reth.md rename to book/vocs/docs/pages/cli/reth.mdx diff --git a/book/cli/reth/config.md b/book/vocs/docs/pages/cli/reth/config.mdx similarity index 100% rename from book/cli/reth/config.md rename to book/vocs/docs/pages/cli/reth/config.mdx diff --git a/book/cli/reth/db.md b/book/vocs/docs/pages/cli/reth/db.mdx similarity index 100% rename from book/cli/reth/db.md rename to book/vocs/docs/pages/cli/reth/db.mdx diff --git a/book/cli/reth/db/checksum.md b/book/vocs/docs/pages/cli/reth/db/checksum.mdx similarity index 100% rename from book/cli/reth/db/checksum.md rename to book/vocs/docs/pages/cli/reth/db/checksum.mdx diff --git a/book/cli/reth/db/clear.md b/book/vocs/docs/pages/cli/reth/db/clear.mdx similarity index 100% rename from book/cli/reth/db/clear.md rename to book/vocs/docs/pages/cli/reth/db/clear.mdx diff --git a/book/cli/reth/db/clear/mdbx.md b/book/vocs/docs/pages/cli/reth/db/clear/mdbx.mdx similarity index 100% rename from book/cli/reth/db/clear/mdbx.md rename to book/vocs/docs/pages/cli/reth/db/clear/mdbx.mdx diff --git a/book/cli/reth/db/clear/static-file.md b/book/vocs/docs/pages/cli/reth/db/clear/static-file.mdx similarity index 100% rename from book/cli/reth/db/clear/static-file.md rename to book/vocs/docs/pages/cli/reth/db/clear/static-file.mdx diff --git a/book/cli/reth/db/diff.md b/book/vocs/docs/pages/cli/reth/db/diff.mdx similarity index 100% rename from book/cli/reth/db/diff.md rename to book/vocs/docs/pages/cli/reth/db/diff.mdx diff --git a/book/cli/reth/db/drop.md b/book/vocs/docs/pages/cli/reth/db/drop.mdx similarity index 100% rename from book/cli/reth/db/drop.md rename to book/vocs/docs/pages/cli/reth/db/drop.mdx diff --git a/book/cli/reth/db/get.md b/book/vocs/docs/pages/cli/reth/db/get.mdx similarity index 100% rename from book/cli/reth/db/get.md rename to book/vocs/docs/pages/cli/reth/db/get.mdx diff --git a/book/cli/reth/db/get/mdbx.md b/book/vocs/docs/pages/cli/reth/db/get/mdbx.mdx similarity index 100% rename from book/cli/reth/db/get/mdbx.md rename to book/vocs/docs/pages/cli/reth/db/get/mdbx.mdx diff --git a/book/cli/reth/db/get/static-file.md b/book/vocs/docs/pages/cli/reth/db/get/static-file.mdx similarity index 100% rename from book/cli/reth/db/get/static-file.md rename to book/vocs/docs/pages/cli/reth/db/get/static-file.mdx diff --git a/book/cli/reth/db/list.md b/book/vocs/docs/pages/cli/reth/db/list.mdx similarity index 100% rename from book/cli/reth/db/list.md rename to book/vocs/docs/pages/cli/reth/db/list.mdx diff --git a/book/cli/reth/db/path.md b/book/vocs/docs/pages/cli/reth/db/path.mdx similarity index 100% rename from book/cli/reth/db/path.md rename to book/vocs/docs/pages/cli/reth/db/path.mdx diff --git a/book/cli/reth/db/stats.md b/book/vocs/docs/pages/cli/reth/db/stats.mdx similarity index 100% rename from book/cli/reth/db/stats.md rename to book/vocs/docs/pages/cli/reth/db/stats.mdx diff --git a/book/cli/reth/db/version.md b/book/vocs/docs/pages/cli/reth/db/version.mdx similarity index 100% rename from book/cli/reth/db/version.md rename to book/vocs/docs/pages/cli/reth/db/version.mdx diff --git a/book/cli/reth/debug.md b/book/vocs/docs/pages/cli/reth/debug.mdx similarity index 100% rename from book/cli/reth/debug.md rename to book/vocs/docs/pages/cli/reth/debug.mdx diff --git a/book/cli/reth/debug/build-block.md b/book/vocs/docs/pages/cli/reth/debug/build-block.mdx similarity index 100% rename from book/cli/reth/debug/build-block.md rename to book/vocs/docs/pages/cli/reth/debug/build-block.mdx diff --git a/book/cli/reth/debug/execution.md b/book/vocs/docs/pages/cli/reth/debug/execution.mdx similarity index 100% rename from book/cli/reth/debug/execution.md rename to book/vocs/docs/pages/cli/reth/debug/execution.mdx diff --git a/book/cli/reth/debug/in-memory-merkle.md b/book/vocs/docs/pages/cli/reth/debug/in-memory-merkle.mdx similarity index 100% rename from book/cli/reth/debug/in-memory-merkle.md rename to book/vocs/docs/pages/cli/reth/debug/in-memory-merkle.mdx diff --git a/book/cli/reth/debug/merkle.md b/book/vocs/docs/pages/cli/reth/debug/merkle.mdx similarity index 100% rename from book/cli/reth/debug/merkle.md rename to book/vocs/docs/pages/cli/reth/debug/merkle.mdx diff --git a/book/cli/reth/download.md b/book/vocs/docs/pages/cli/reth/download.mdx similarity index 100% rename from book/cli/reth/download.md rename to book/vocs/docs/pages/cli/reth/download.mdx diff --git a/book/cli/reth/dump-genesis.md b/book/vocs/docs/pages/cli/reth/dump-genesis.mdx similarity index 100% rename from book/cli/reth/dump-genesis.md rename to book/vocs/docs/pages/cli/reth/dump-genesis.mdx diff --git a/book/cli/reth/import-era.md b/book/vocs/docs/pages/cli/reth/import-era.mdx similarity index 100% rename from book/cli/reth/import-era.md rename to book/vocs/docs/pages/cli/reth/import-era.mdx diff --git a/book/cli/reth/import.md b/book/vocs/docs/pages/cli/reth/import.mdx similarity index 100% rename from book/cli/reth/import.md rename to book/vocs/docs/pages/cli/reth/import.mdx diff --git a/book/cli/reth/init-state.md b/book/vocs/docs/pages/cli/reth/init-state.mdx similarity index 100% rename from book/cli/reth/init-state.md rename to book/vocs/docs/pages/cli/reth/init-state.mdx diff --git a/book/cli/reth/init.md b/book/vocs/docs/pages/cli/reth/init.mdx similarity index 100% rename from book/cli/reth/init.md rename to book/vocs/docs/pages/cli/reth/init.mdx diff --git a/book/cli/reth/node.md b/book/vocs/docs/pages/cli/reth/node.mdx similarity index 100% rename from book/cli/reth/node.md rename to book/vocs/docs/pages/cli/reth/node.mdx diff --git a/book/cli/reth/p2p.md b/book/vocs/docs/pages/cli/reth/p2p.mdx similarity index 100% rename from book/cli/reth/p2p.md rename to book/vocs/docs/pages/cli/reth/p2p.mdx diff --git a/book/cli/reth/p2p/body.md b/book/vocs/docs/pages/cli/reth/p2p/body.mdx similarity index 100% rename from book/cli/reth/p2p/body.md rename to book/vocs/docs/pages/cli/reth/p2p/body.mdx diff --git a/book/cli/reth/p2p/header.md b/book/vocs/docs/pages/cli/reth/p2p/header.mdx similarity index 100% rename from book/cli/reth/p2p/header.md rename to book/vocs/docs/pages/cli/reth/p2p/header.mdx diff --git a/book/cli/reth/p2p/rlpx.md b/book/vocs/docs/pages/cli/reth/p2p/rlpx.mdx similarity index 100% rename from book/cli/reth/p2p/rlpx.md rename to book/vocs/docs/pages/cli/reth/p2p/rlpx.mdx diff --git a/book/cli/reth/p2p/rlpx/ping.md b/book/vocs/docs/pages/cli/reth/p2p/rlpx/ping.mdx similarity index 100% rename from book/cli/reth/p2p/rlpx/ping.md rename to book/vocs/docs/pages/cli/reth/p2p/rlpx/ping.mdx diff --git a/book/cli/reth/prune.md b/book/vocs/docs/pages/cli/reth/prune.mdx similarity index 100% rename from book/cli/reth/prune.md rename to book/vocs/docs/pages/cli/reth/prune.mdx diff --git a/book/cli/reth/recover.md b/book/vocs/docs/pages/cli/reth/recover.mdx similarity index 100% rename from book/cli/reth/recover.md rename to book/vocs/docs/pages/cli/reth/recover.mdx diff --git a/book/cli/reth/recover/storage-tries.md b/book/vocs/docs/pages/cli/reth/recover/storage-tries.mdx similarity index 100% rename from book/cli/reth/recover/storage-tries.md rename to book/vocs/docs/pages/cli/reth/recover/storage-tries.mdx diff --git a/book/cli/reth/stage.md b/book/vocs/docs/pages/cli/reth/stage.mdx similarity index 100% rename from book/cli/reth/stage.md rename to book/vocs/docs/pages/cli/reth/stage.mdx diff --git a/book/cli/reth/stage/drop.md b/book/vocs/docs/pages/cli/reth/stage/drop.mdx similarity index 100% rename from book/cli/reth/stage/drop.md rename to book/vocs/docs/pages/cli/reth/stage/drop.mdx diff --git a/book/cli/reth/stage/dump.md b/book/vocs/docs/pages/cli/reth/stage/dump.mdx similarity index 100% rename from book/cli/reth/stage/dump.md rename to book/vocs/docs/pages/cli/reth/stage/dump.mdx diff --git a/book/cli/reth/stage/dump/account-hashing.md b/book/vocs/docs/pages/cli/reth/stage/dump/account-hashing.mdx similarity index 100% rename from book/cli/reth/stage/dump/account-hashing.md rename to book/vocs/docs/pages/cli/reth/stage/dump/account-hashing.mdx diff --git a/book/cli/reth/stage/dump/execution.md b/book/vocs/docs/pages/cli/reth/stage/dump/execution.mdx similarity index 100% rename from book/cli/reth/stage/dump/execution.md rename to book/vocs/docs/pages/cli/reth/stage/dump/execution.mdx diff --git a/book/cli/reth/stage/dump/merkle.md b/book/vocs/docs/pages/cli/reth/stage/dump/merkle.mdx similarity index 100% rename from book/cli/reth/stage/dump/merkle.md rename to book/vocs/docs/pages/cli/reth/stage/dump/merkle.mdx diff --git a/book/cli/reth/stage/dump/storage-hashing.md b/book/vocs/docs/pages/cli/reth/stage/dump/storage-hashing.mdx similarity index 100% rename from book/cli/reth/stage/dump/storage-hashing.md rename to book/vocs/docs/pages/cli/reth/stage/dump/storage-hashing.mdx diff --git a/book/cli/reth/stage/run.md b/book/vocs/docs/pages/cli/reth/stage/run.mdx similarity index 100% rename from book/cli/reth/stage/run.md rename to book/vocs/docs/pages/cli/reth/stage/run.mdx diff --git a/book/cli/reth/stage/unwind.md b/book/vocs/docs/pages/cli/reth/stage/unwind.mdx similarity index 100% rename from book/cli/reth/stage/unwind.md rename to book/vocs/docs/pages/cli/reth/stage/unwind.mdx diff --git a/book/cli/reth/stage/unwind/num-blocks.md b/book/vocs/docs/pages/cli/reth/stage/unwind/num-blocks.mdx similarity index 100% rename from book/cli/reth/stage/unwind/num-blocks.md rename to book/vocs/docs/pages/cli/reth/stage/unwind/num-blocks.mdx diff --git a/book/cli/reth/stage/unwind/to-block.md b/book/vocs/docs/pages/cli/reth/stage/unwind/to-block.mdx similarity index 100% rename from book/cli/reth/stage/unwind/to-block.md rename to book/vocs/docs/pages/cli/reth/stage/unwind/to-block.mdx diff --git a/book/cli/reth/test-vectors/tables.md b/book/vocs/docs/pages/cli/reth/test-vectors/tables.mdx similarity index 100% rename from book/cli/reth/test-vectors/tables.md rename to book/vocs/docs/pages/cli/reth/test-vectors/tables.mdx diff --git a/book/developers/exex/hello-world.md b/book/vocs/docs/pages/exex/hello-world.mdx similarity index 70% rename from book/developers/exex/hello-world.md rename to book/vocs/docs/pages/exex/hello-world.mdx index c1f3e5af94..547f6e4e31 100644 --- a/book/developers/exex/hello-world.md +++ b/book/vocs/docs/pages/exex/hello-world.mdx @@ -1,3 +1,7 @@ +--- +description: Example of a minimal Hello World ExEx in Reth. +--- + # Hello World Let's write a simple "Hello World" ExEx that emits a log every time a new chain of blocks is committed, reverted, or reorged. @@ -14,15 +18,15 @@ cd my-exex And add Reth as a dependency in `Cargo.toml` ```toml -{{#include ../../sources/exex/hello-world/Cargo.toml}} +// [!include ~/snippets/sources/exex/hello-world/Cargo.toml] ``` ### Default Reth node Now, let's jump to our `main.rs` and start by initializing and launching a default Reth node -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/hello-world/src/bin/1.rs}} +```rust +// [!include ~/snippets/sources/exex/hello-world/src/bin/1.rs] ``` You can already test that it works by running the binary and initializing the Holesky node in a custom datadir @@ -42,8 +46,8 @@ $ cargo run -- init --chain holesky --datadir data The simplest ExEx is just an async function that never returns. We need to install it into our node -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/hello-world/src/bin/2.rs}} +```rust +// [!include ~/snippets/sources/exex/hello-world/src/bin/2.rs] ``` See that unused `_ctx`? That's the context that we'll use to listen to new notifications coming from the main node, @@ -63,17 +67,17 @@ If you try running a node with an ExEx that exits, the node will exit as well. Now, let's extend our simplest ExEx and start actually listening to new notifications, log them, and send events back to the main node -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/hello-world/src/bin/3.rs}} +```rust +// [!include ~/snippets/sources/exex/hello-world/src/bin/3.rs] ``` Woah, there's a lot of new stuff here! Let's go through it step by step: -- First, we've added a `while let Some(notification) = ctx.notifications.recv().await` loop that waits for new notifications to come in. - - The main node is responsible for sending notifications to the ExEx, so we're waiting for them to come in. -- Next, we've added a `match ¬ification { ... }` block that matches on the type of the notification. - - In each case, we're logging the notification and the corresponding block range, be it a chain commit, revert, or reorg. -- Finally, we're checking if the notification contains a committed chain, and if it does, we're sending a `ExExEvent::FinishedHeight` event back to the main node using the `ctx.events.send` method. +- First, we've added a `while let Some(notification) = ctx.notifications.recv().await` loop that waits for new notifications to come in. + - The main node is responsible for sending notifications to the ExEx, so we're waiting for them to come in. +- Next, we've added a `match ¬ification { ... }` block that matches on the type of the notification. + - In each case, we're logging the notification and the corresponding block range, be it a chain commit, revert, or reorg. +- Finally, we're checking if the notification contains a committed chain, and if it does, we're sending a `ExExEvent::FinishedHeight` event back to the main node using the `ctx.events.send` method.
@@ -88,4 +92,4 @@ What we've arrived at is the [minimal ExEx example](https://github.com/paradigmx ## What's next? -Let's do something a bit more interesting, and see how you can [keep track of some state](./tracking-state.md) inside your ExEx. +Let's do something a bit more interesting, and see how you can [keep track of some state](./tracking-state) inside your ExEx. diff --git a/book/developers/exex/how-it-works.md b/book/vocs/docs/pages/exex/how-it-works.mdx similarity index 67% rename from book/developers/exex/how-it-works.md rename to book/vocs/docs/pages/exex/how-it-works.mdx index 7f80d71cbf..21162a7562 100644 --- a/book/developers/exex/how-it-works.md +++ b/book/vocs/docs/pages/exex/how-it-works.mdx @@ -1,3 +1,7 @@ +--- +description: How Execution Extensions (ExExes) work in Reth. +--- + # How do ExExes work? ExExes are just [Futures](https://doc.rust-lang.org/std/future/trait.Future.html) that run indefinitely alongside Reth @@ -7,12 +11,13 @@ An ExEx is usually driven by and acts on new notifications about chain commits, They are installed into the node by using the [node builder](https://reth.rs/docs/reth/builder/struct.NodeBuilder.html). Reth manages the lifecycle of all ExExes, including: -- Polling ExEx futures -- Sending [notifications](https://reth.rs/docs/reth_exex/enum.ExExNotification.html) about new chain, reverts, - and reorgs from historical and live sync -- Processing [events](https://reth.rs/docs/reth_exex/enum.ExExEvent.html) emitted by ExExes -- Pruning (in case of a full or pruned node) only the data that has been processed by all ExExes -- Shutting ExExes down when the node is shut down + +- Polling ExEx futures +- Sending [notifications](https://reth.rs/docs/reth_exex/enum.ExExNotification.html) about new chain, reverts, + and reorgs from historical and live sync +- Processing [events](https://reth.rs/docs/reth_exex/enum.ExExEvent.html) emitted by ExExes +- Pruning (in case of a full or pruned node) only the data that has been processed by all ExExes +- Shutting ExExes down when the node is shut down ## Pruning diff --git a/book/developers/exex/exex.md b/book/vocs/docs/pages/exex/overview.mdx similarity index 62% rename from book/developers/exex/exex.md rename to book/vocs/docs/pages/exex/overview.mdx index 25372a7c92..abfcc8f3b8 100644 --- a/book/developers/exex/exex.md +++ b/book/vocs/docs/pages/exex/overview.mdx @@ -1,9 +1,13 @@ +--- +description: Introduction to Execution Extensions (ExEx) in Reth. +--- + # Execution Extensions (ExEx) ## What are Execution Extensions? Execution Extensions (or ExExes, for short) allow developers to build their own infrastructure that relies on Reth -as a base for driving the chain (be it [Ethereum](../../run/mainnet.md) or [OP Stack](../../run/optimism.md)) forward. +as a base for driving the chain (be it [Ethereum](/run/ethereum) or [OP Stack](/run/opstack)) forward. An Execution Extension is a task that derives its state from changes in Reth's state. Some examples of such state derivations are rollups, bridges, and indexers. @@ -18,14 +22,18 @@ Read more about things you can build with Execution Extensions in the [Paradigm Execution Extensions are not separate processes that connect to the main Reth node process. Instead, ExExes are compiled into the same binary as Reth, and run alongside it, using shared memory for communication. -If you want to build an Execution Extension that sends data into a separate process, check out the [Remote](./remote.md) chapter. +If you want to build an Execution Extension that sends data into a separate process, check out the [Remote](/exex/remote) chapter. ## How do I build an Execution Extension? Let's dive into how to build our own ExEx from scratch, add tests for it, and run it on the Holesky testnet. -1. [How do ExExes work?](./how-it-works.md) -1. [Hello World](./hello-world.md) -1. [Tracking State](./tracking-state.md) -1. [Remote](./remote.md) +1. [How do ExExes work?](/exex/how-it-works) +1. [Hello World](/exex/hello-world) +1. [Tracking State](/exex/tracking-state) +1. [Remote](/exex/remote) + +:::tip +For more practical examples and ready-to-use ExEx implementations, check out the [reth-exex-examples](https://github.com/paradigmxyz/reth-exex-examples) repository which contains various ExEx examples including indexers, bridges, and other state derivation patterns. +::: diff --git a/book/developers/exex/remote.md b/book/vocs/docs/pages/exex/remote.mdx similarity index 76% rename from book/developers/exex/remote.md rename to book/vocs/docs/pages/exex/remote.mdx index 0ec704308f..92da337208 100644 --- a/book/developers/exex/remote.md +++ b/book/vocs/docs/pages/exex/remote.mdx @@ -1,10 +1,15 @@ +--- +description: Building a remote ExEx that communicates via gRPC. +--- + # Remote Execution Extensions In this chapter, we will learn how to create an ExEx that emits all notifications to an external process. We will use [Tonic](https://github.com/hyperium/tonic) to create a gRPC server and a client. -- The server binary will have the Reth client, our ExEx and the gRPC server. -- The client binary will have the gRPC client that connects to the server. + +- The server binary will have the Reth client, our ExEx and the gRPC server. +- The client binary will have the gRPC client that connects to the server. ## Prerequisites @@ -21,20 +26,21 @@ $ cargo new --lib exex-remote $ cd exex-remote ``` -We will also need a bunch of dependencies. Some of them you know from the [Hello World](./hello-world.md) chapter, +We will also need a bunch of dependencies. Some of them you know from the [Hello World](./hello-world) chapter, but some of specific to what we need now. ```toml -{{#include ../../sources/exex/remote/Cargo.toml}} +// [!include ~/snippets/sources/exex/remote/Cargo.toml] ``` We also added a build dependency for Tonic. We will use it to generate the Rust code for our Protobuf definitions at compile time. Read more about using Tonic in the -[introductory tutorial](https://github.com/hyperium/tonic/blob/6a213e9485965db0628591e30577ed81cdaeaf2b/examples/helloworld-tutorial.md). +[introductory tutorial](https://github.com/hyperium/tonic/blob/6a213e9485965db0628591e30577ed81cdaeaf2b/examples/helloworld-tutorial). Also, we now have two separate binaries: -- `exex` is the server binary that will run the ExEx and the gRPC server. -- `consumer` is the client binary that will connect to the server and receive notifications. + +- `exex` is the server binary that will run the ExEx and the gRPC server. +- `consumer` is the client binary that will connect to the server and receive notifications. ### Create the Protobuf definitions @@ -53,12 +59,13 @@ For an example of a full schema, see the [Remote ExEx](https://github.com/paradi
```protobuf -{{#include ../../sources/exex/remote/proto/exex.proto}} +// [!include ~/snippets/sources/exex/remote/proto/exex.proto] ``` To instruct Tonic to generate the Rust code using this `.proto`, add the following lines to your `lib.rs` file: -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/remote/src/lib.rs}} + +```rust +// [!include ~/snippets/sources/exex/remote/src/lib.rs] ``` ## ExEx and gRPC server @@ -70,8 +77,8 @@ We will now create the ExEx and the gRPC server in our `src/exex.rs` file. Let's create a minimal gRPC server that listens on the port `:10000`, and spawn it using the [NodeBuilder](https://reth.rs/docs/reth/builder/struct.NodeBuilder.html)'s [task executor](https://reth.rs/docs/reth/tasks/struct.TaskExecutor.html). -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/remote/src/exex_1.rs}} +```rust +// [!include ~/snippets/sources/exex/remote/src/exex_1.rs] ``` Currently, it does not send anything on the stream. @@ -81,8 +88,8 @@ to send new `ExExNotification` on it. Let's create this channel in the `main` function where we will have both gRPC server and ExEx initiated, and save the sender part (that way we will be able to create new receivers) of this channel in our gRPC server. -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/remote/src/exex_2.rs}} +```rust +// [!include ~/snippets/sources/exex/remote/src/exex_2.rs] ``` And with that, we're ready to handle incoming notifications, serialize them with [bincode](https://docs.rs/bincode/) @@ -91,8 +98,8 @@ and send back to the client. For each incoming request, we spawn a separate tokio task that will run in the background, and then return the stream receiver to the client. -```rust,norun,noplayground,ignore -{{#rustdoc_include ../../sources/exex/remote/src/exex_3.rs:snippet}} +```rust +// [!include ~/snippets/sources/exex/remote/src/exex_3.rs] ``` That's it for the gRPC server part! It doesn't receive anything on the `notifications` channel yet, @@ -110,25 +117,24 @@ Don't forget to emit `ExExEvent::FinishedHeight` -```rust,norun,noplayground,ignore -{{#rustdoc_include ../../sources/exex/remote/src/exex_4.rs:snippet}} +```rust +// [!include ~/snippets/sources/exex/remote/src/exex_4.rs] ``` All that's left is to connect all pieces together: install our ExEx in the node and pass the sender part of communication channel to it. -```rust,norun,noplayground,ignore -{{#rustdoc_include ../../sources/exex/remote/src/exex.rs:snippet}} +```rust +// [!include ~/snippets/sources/exex/remote/src/exex.rs] ``` ### Full `exex.rs` code
-Click to expand - -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/remote/src/exex.rs}} -``` + Click to expand + ```rust + // [!include ~/snippets/sources/exex/remote/src/exex.rs] + ```
## Consumer @@ -143,8 +149,8 @@ because notifications can get very heavy -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/remote/src/consumer.rs}} +```rust +// [!include ~/snippets/sources/exex/remote/src/consumer.rs] ``` ## Running @@ -162,4 +168,4 @@ And in the other, we will run our consumer: cargo run --bin consumer --release ``` - +![remote_exex](/remote_exex.png) diff --git a/book/developers/exex/tracking-state.md b/book/vocs/docs/pages/exex/tracking-state.mdx similarity index 63% rename from book/developers/exex/tracking-state.md rename to book/vocs/docs/pages/exex/tracking-state.mdx index 92e4ee0f18..cd704c8896 100644 --- a/book/developers/exex/tracking-state.md +++ b/book/vocs/docs/pages/exex/tracking-state.mdx @@ -1,8 +1,12 @@ +--- +description: How to track state in a custom ExEx. +--- + # Tracking State In this chapter, we'll learn how to keep track of some state inside our ExEx. -Let's continue with our Hello World example from the [previous chapter](./hello-world.md). +Let's continue with our Hello World example from the [previous chapter](./hello-world). ### Turning ExEx into a struct @@ -18,8 +22,8 @@ because you can't access variables inside the function to assert the state of yo -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/tracking-state/src/bin/1.rs}} +```rust +// [!include ~/snippets/sources/exex/tracking-state/src/bin/1.rs] ``` For those who are not familiar with how async Rust works on a lower level, that may seem scary, @@ -39,23 +43,25 @@ With all that done, we're now free to add more fields to our `MyExEx` struct, an Our ExEx will count the number of transactions in each block and log it to the console. -```rust,norun,noplayground,ignore -{{#include ../../sources/exex/tracking-state/src/bin/2.rs}} +```rust +// [!include ~/snippets/sources/exex/tracking-state/src/bin/2.rs] ``` As you can see, we added two fields to our ExEx struct: -- `first_block` to keep track of the first block that was committed since the start of the ExEx. -- `transactions` to keep track of the total number of transactions committed, accounting for reorgs and reverts. + +- `first_block` to keep track of the first block that was committed since the start of the ExEx. +- `transactions` to keep track of the total number of transactions committed, accounting for reorgs and reverts. We also changed our `match` block to two `if` clauses: -- First one checks if there's a reverted chain using `notification.reverted_chain()`. If there is: - - We subtract the number of transactions in the reverted chain from the total number of transactions. - - It's important to do the `saturating_sub` here, because if we just started our node and - instantly received a reorg, our `transactions` field will still be zero. -- Second one checks if there's a committed chain using `notification.committed_chain()`. If there is: - - We update the `first_block` field to the first block of the committed chain. - - We add the number of transactions in the committed chain to the total number of transactions. - - We send a `FinishedHeight` event back to the main node. + +- First one checks if there's a reverted chain using `notification.reverted_chain()`. If there is: + - We subtract the number of transactions in the reverted chain from the total number of transactions. + - It's important to do the `saturating_sub` here, because if we just started our node and + instantly received a reorg, our `transactions` field will still be zero. +- Second one checks if there's a committed chain using `notification.committed_chain()`. If there is: + - We update the `first_block` field to the first block of the committed chain. + - We add the number of transactions in the committed chain to the total number of transactions. + - We send a `FinishedHeight` event back to the main node. Finally, on every notification, we log the total number of transactions and the first block that was committed since the start of the ExEx. diff --git a/book/vocs/docs/pages/index.mdx b/book/vocs/docs/pages/index.mdx new file mode 100644 index 0000000000..5e65d0695c --- /dev/null +++ b/book/vocs/docs/pages/index.mdx @@ -0,0 +1,162 @@ +--- +content: + width: 100% +layout: landing +showLogo: false +title: Reth +description: Secure, performant and modular node implementation that supports both Ethereum and OP-Stack chains. +--- + +import { HomePage, Sponsors } from "vocs/components"; +import { SdkShowcase } from "../components/SdkShowcase"; +import { TrustedBy } from "../components/TrustedBy"; + +
+
+
+
+
+ Reth +
Secure, performant, and modular blockchain SDK and node.
+
+
+ Run a Node + Build a Node + Why Reth? +
+
+
+
+ :::code-group + + ```bash [Run a Node] + # Install the binary + brew install paradigmxyz/brew/reth + + # Run the node with JSON-RPC enabled + reth node --http --http.api eth,trace + ``` + + ```rust [Build a Node] + // .. snip .. + let handle = node_builder + .with_types::() + .with_components(EthereumNode::components()) + .with_add_ons(EthereumAddOns::default()) + .launch() + .await?; + ``` + + ::: +
+
+ +
+
+ stars +
+
+ 4.7K +
+
+
+
+ + +
+
+ contributors +
+
+ 580+ +
+
+
+ +
+
+
+ +
Institutional Security
+
Run reliable staking nodes trusted by Coinbase Staking
+
+
+
+
+
+
+
+ +
Performant
+
Sync faster with optimal transaction processing
+
+
+
+
+
+
+ +
+ +## Trusted by the Best + +Leading infra companies use Reth for MEV applications, staking, RPC services and generating zero-knowledge proofs. + +
+ +
+ +## Built with Reth SDK + +Production chains and networks powered by Reth's modular architecture. These nodes are built using existing components without forking, saving several engineering hours while improving maintainability. + +
+ +
+ +## Supporters + + +
diff --git a/book/installation/binaries.md b/book/vocs/docs/pages/installation/binaries.mdx similarity index 90% rename from book/installation/binaries.md rename to book/vocs/docs/pages/installation/binaries.mdx index fc741805cd..56c5cf2bac 100644 --- a/book/installation/binaries.md +++ b/book/vocs/docs/pages/installation/binaries.mdx @@ -1,3 +1,7 @@ +--- +description: Instructions for installing Reth using pre-built binaries for Windows, macOS, and Linux, including Homebrew and Arch Linux AUR options. Explains how to verify binary signatures and provides details about the release signing key. +--- + # Binaries [**Archives of precompiled binaries of reth are available for Windows, macOS and Linux.**](https://github.com/paradigmxyz/reth/releases) They are static executables. Users of platforms not explicitly listed below should download one of these archives. @@ -41,7 +45,7 @@ Replace the filenames by those corresponding to the downloaded Reth release. Releases are signed using the key with ID [`50FB7CC55B2E8AFA59FE03B7AA5ED56A7FBF253E`](https://keyserver.ubuntu.com/pks/lookup?search=50FB7CC55B2E8AFA59FE03B7AA5ED56A7FBF253E&fingerprint=on&op=index). -```none +```text -----BEGIN PGP PUBLIC KEY BLOCK----- mDMEZl4GjhYJKwYBBAHaRw8BAQdAU5gnINBAfIgF9S9GzZ1zHDwZtv/WcJRIQI+h diff --git a/book/installation/build-for-arm-devices.md b/book/vocs/docs/pages/installation/build-for-arm-devices.mdx similarity index 82% rename from book/installation/build-for-arm-devices.md rename to book/vocs/docs/pages/installation/build-for-arm-devices.mdx index 21d32c9e8b..534fe1c014 100644 --- a/book/installation/build-for-arm-devices.md +++ b/book/vocs/docs/pages/installation/build-for-arm-devices.mdx @@ -1,3 +1,7 @@ +--- +description: Building and troubleshooting Reth on ARM devices. +--- + # Building for ARM devices Reth can be built for and run on ARM devices, but there are a few things to take into consideration before. @@ -37,8 +41,8 @@ Some newer versions of ARM architecture offer support for Large Virtual Address ### Additional Resources -- [ARM developer documentation](https://developer.arm.com/documentation/ddi0406/cb/Appendixes/ARMv4-and-ARMv5-Differences/System-level-memory-model/Virtual-memory-support) -- [ARM Community Forums](https://community.arm.com) +- [ARM developer documentation](https://developer.arm.com/documentation/ddi0406/cb/Appendixes/ARMv4-and-ARMv5-Differences/System-level-memory-model/Virtual-memory-support) +- [ARM Community Forums](https://community.arm.com) ## Build Reth @@ -57,16 +61,21 @@ This error is raised whenever MDBX can not open a database due to the limitation You will need to recompile the Linux Kernel to fix the issue. A simple and safe approach to achieve this is to use the Armbian build framework to create a new image of the OS that will be flashed to a storage device of your choice - an SD card for example - with the following kernel feature values: -- **Page Size**: 64 KB -- **Virtual Address Space Size**: 48 Bits + +- **Page Size**: 64 KB +- **Virtual Address Space Size**: 48 Bits To be able to build an Armbian image and set those values, you will need to: -- Clone the Armbian build framework repository + +- Clone the Armbian build framework repository + ```bash git clone https://github.com/armbian/build cd build ``` -- Run the compile script with the following parameters: + +- Run the compile script with the following parameters: + ```bash ./compile.sh \ BUILD_MINIMAL=yes \ @@ -74,5 +83,6 @@ BUILD_DESKTOP=no \ KERNEL_CONFIGURE=yes \ CARD_DEVICE="/dev/sdX" # Replace sdX with your own storage device ``` -- From there, you will be able to select the target board, the OS release and branch. Then, once you get in the **Kernel Configuration** screen, select the **Kernel Features options** and set the previous values accordingly. -- Wait for the process to finish, plug your storage device into your board and start it. You can now download or install Reth and it should work properly. + +- From there, you will be able to select the target board, the OS release and branch. Then, once you get in the **Kernel Configuration** screen, select the **Kernel Features options** and set the previous values accordingly. +- Wait for the process to finish, plug your storage device into your board and start it. You can now download or install Reth and it should work properly. diff --git a/book/installation/docker.md b/book/vocs/docs/pages/installation/docker.mdx similarity index 80% rename from book/installation/docker.md rename to book/vocs/docs/pages/installation/docker.mdx index 6ce2ae50a5..8774d549a5 100644 --- a/book/installation/docker.md +++ b/book/vocs/docs/pages/installation/docker.mdx @@ -1,3 +1,7 @@ +--- +description: Guide to running Reth using Docker, including obtaining images from GitHub or building locally, using Docker Compose. +--- + # Docker There are two ways to obtain a Reth Docker image: @@ -8,9 +12,10 @@ There are two ways to obtain a Reth Docker image: Once you have obtained the Docker image, proceed to [Using the Docker image](#using-the-docker-image). -> **Note** -> -> Reth requires Docker Engine version 20.10.10 or higher due to [missing support](https://docs.docker.com/engine/release-notes/20.10/#201010) for the `clone3` syscall in previous versions. +:::note +Reth requires Docker Engine version 20.10.10 or higher due to [missing support](https://docs.docker.com/engine/release-notes/20.10/#201010) for the `clone3` syscall in previous versions. +::: + ## GitHub Reth docker images for both x86_64 and ARM64 machines are published with every release of reth on GitHub Container Registry. @@ -52,6 +57,7 @@ docker run reth:local --version ## Using the Docker image There are two ways to use the Docker image: + 1. [Using Docker](#using-plain-docker) 2. [Using Docker Compose](#using-docker-compose) @@ -86,12 +92,12 @@ To run Reth with Docker Compose, run the following command from a shell inside t docker compose -f etc/docker-compose.yml -f etc/lighthouse.yml up -d ``` -> **Note** -> -> If you want to run Reth with a CL that is not Lighthouse: -> -> - The JWT for the consensus client can be found at `etc/jwttoken/jwt.hex` in this repository, after the `etc/generate-jwt.sh` script is run -> - The Reth Engine API is accessible on `localhost:8551` +:::note +If you want to run Reth with a CL that is not Lighthouse: + +- The JWT for the consensus client can be found at `etc/jwttoken/jwt.hex` in this repository, after the `etc/generate-jwt.sh` script is run +- The Reth Engine API is accessible on `localhost:8551` + ::: To check if Reth is running correctly, run: @@ -101,18 +107,19 @@ docker compose -f etc/docker-compose.yml -f etc/lighthouse.yml logs -f reth The default `docker-compose.yml` file will create three containers: -- Reth -- Prometheus -- Grafana +- Reth +- Prometheus +- Grafana The optional `lighthouse.yml` file will create two containers: -- Lighthouse -- [`ethereum-metrics-exporter`](https://github.com/ethpandaops/ethereum-metrics-exporter) +- Lighthouse +- [`ethereum-metrics-exporter`](https://github.com/ethpandaops/ethereum-metrics-exporter) Grafana will be exposed on `localhost:3000` and accessible via default credentials (username and password is `admin`), with two available dashboards: -- reth -- Ethereum Metrics Exporter (works only if Lighthouse is also running) + +- reth +- Ethereum Metrics Exporter (works only if Lighthouse is also running) ## Interacting with Reth inside Docker @@ -124,7 +131,7 @@ docker exec -it reth bash **If Reth is running with Docker Compose, replace `reth` with `reth-reth-1` in the above command** -Refer to the [CLI docs](../cli/cli.md) to interact with Reth once inside the Reth container. +Refer to the [CLI docs](#TODO) to interact with Reth once inside the Reth container. ## Run only Grafana in Docker @@ -134,4 +141,4 @@ This allows importing existing Grafana dashboards, without running Reth in Docke docker compose -f etc/docker-compose.yml up -d --no-deps grafana ``` -After login with `admin:admin` credentials, Prometheus should be listed under [`Grafana datasources`](http://localhost:3000/connections/datasources). Replace its `Prometheus server URL` so it points to locally running one. On Mac or Windows, use `http://host.docker.internal:9090`. On Linux, try `http://172.17.0.1:9090`. \ No newline at end of file +After login with `admin:admin` credentials, Prometheus should be listed under [`Grafana datasources`](http://localhost:3000/connections/datasources). Replace its `Prometheus server URL` so it points to locally running one. On Mac or Windows, use `http://host.docker.internal:9090`. On Linux, try `http://172.17.0.1:9090`. diff --git a/book/vocs/docs/pages/installation/overview.mdx b/book/vocs/docs/pages/installation/overview.mdx new file mode 100644 index 0000000000..8101c509cd --- /dev/null +++ b/book/vocs/docs/pages/installation/overview.mdx @@ -0,0 +1,18 @@ +--- +description: Installation instructions for Reth and hardware recommendations. +--- + +# Installation + +Reth runs on Linux and macOS (Windows tracked). + +There are three core methods to obtain Reth: + +- [Pre-built binaries](./binaries) +- [Docker images](./docker) +- [Building from source.](./source) + +:::note +If you have Docker installed, we recommend using the [Docker Compose](./docker#using-docker-compose) configuration +that will get you Reth, Lighthouse (Consensus Client), Prometheus and Grafana running and syncing with just one command. +::: diff --git a/book/vocs/docs/pages/installation/priorities.mdx b/book/vocs/docs/pages/installation/priorities.mdx new file mode 100644 index 0000000000..4494083e39 --- /dev/null +++ b/book/vocs/docs/pages/installation/priorities.mdx @@ -0,0 +1,22 @@ +--- +description: Explains Reth update priorities for user classes such as payload builders and non-payload builders. +--- + +# Update Priorities + +When publishing releases, reth will include an "Update Priority" section in the release notes, in the same manner Lighthouse does. + +The "Update Priority" section will include a table which may appear like so: + +| User Class | Priority | +| -------------------- | --------------- | +| Payload Builders | Medium Priority | +| Non-Payload Builders | Low Priority | + +To understand this table, the following terms are important: + +- _Payload builders_ are those who use reth to build and validate payloads. +- _Non-payload builders_ are those who run reth for other purposes (e.g., data analysis, RPC or applications). +- _High priority_ updates should be completed as soon as possible (e.g., hours or days). +- _Medium priority_ updates should be completed at the next convenience (e.g., days or a week). +- _Low priority_ updates should be completed in the next routine update cycle (e.g., two weeks). diff --git a/book/installation/source.md b/book/vocs/docs/pages/installation/source.mdx similarity index 72% rename from book/installation/source.md rename to book/vocs/docs/pages/installation/source.mdx index d9642c4bc4..d3d412a58f 100644 --- a/book/installation/source.md +++ b/book/vocs/docs/pages/installation/source.mdx @@ -1,14 +1,18 @@ +--- +description: How to build, update, and troubleshoot Reth from source. +--- + # Build from Source You can build Reth on Linux, macOS, Windows, and Windows WSL2. -> **Note** -> -> Reth does **not** work on Windows WSL1. +:::note +Reth does **not** work on Windows WSL1. +::: ## Dependencies -First, **install Rust** using [rustup](https://rustup.rs/): +First, **install Rust** using [rustup](https://rustup.rs/): ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh @@ -16,19 +20,20 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh The rustup installer provides an easy way to update the Rust compiler, and works on all platforms. -> **Tips** -> -> - During installation, when prompted, enter `1` for the default installation. -> - After Rust installation completes, try running `cargo version` . If it cannot -> be found, run `source $HOME/.cargo/env`. After that, running `cargo version` should return the version, for example `cargo 1.68.2`. -> - It's generally advisable to append `source $HOME/.cargo/env` to `~/.bashrc`. +:::tip + +- During installation, when prompted, enter `1` for the default installation. +- After Rust installation completes, try running `cargo version` . If it cannot + be found, run `source $HOME/.cargo/env`. After that, running `cargo version` should return the version, for example `cargo 1.68.2`. +- It's generally advisable to append `source $HOME/.cargo/env` to `~/.bashrc`. + ::: With Rust installed, follow the instructions below to install dependencies relevant to your operating system: -- **Ubuntu**: `apt-get install libclang-dev pkg-config build-essential` -- **macOS**: `brew install llvm pkg-config` -- **Windows**: `choco install llvm` or `winget install LLVM.LLVM` +- **Ubuntu**: `apt-get install libclang-dev pkg-config build-essential` +- **macOS**: `brew install llvm pkg-config` +- **Windows**: `choco install llvm` or `winget install LLVM.LLVM` These are needed to build bindings for Reth's database. @@ -60,7 +65,7 @@ cargo build --release This will place the reth binary under `./target/release/reth`, and you can copy it to your directory of preference after that. -Compilation may take around 10 minutes. Installation was successful if `reth --help` displays the [command-line documentation](../cli/cli.md). +Compilation may take around 10 minutes. Installation was successful if `reth --help` displays the [command-line documentation](#TODO). If you run into any issues, please check the [Troubleshooting](#troubleshooting) section, or reach out to us on [Telegram](https://t.me/paradigm_reth). @@ -88,11 +93,11 @@ You can customise the compiler settings used to compile Reth via Reth includes several profiles which can be selected via the Cargo flag `--profile`. -* `release`: default for source builds, enables most optimisations while not taking too long to - compile. -* `maxperf`: default for binary releases, enables aggressive optimisations including full LTO. - Although compiling with this profile improves some benchmarks by around 20% compared to `release`, - it imposes a _significant_ cost at compile time and is only recommended if you have a fast CPU. +- `release`: default for source builds, enables most optimisations while not taking too long to + compile. +- `maxperf`: default for binary releases, enables aggressive optimisations including full LTO. + Although compiling with this profile improves some benchmarks by around 20% compared to `release`, + it imposes a _significant_ cost at compile time and is only recommended if you have a fast CPU. **Rust compiler flags** @@ -107,9 +112,10 @@ RUSTFLAGS="-C target-cpu=native" cargo build --profile maxperf Finally, some optional features are present that may improve performance, but may not very portable, and as such might not compile on your particular system. These are currently: -- `jemalloc`: replaces the default system memory allocator with [`jemalloc`](https://jemalloc.net/); this feature is unstable on Windows -- `asm-keccak`: replaces the default, pure-Rust implementation of Keccak256 with one implemented in assembly; see [the `keccak-asm` crate](https://github.com/DaniPopes/keccak-asm) for more details and supported targets -- `min-LEVEL-logs`, where `LEVEL` is one of `error`, `warn`, `info`, `debug`, `trace`: disables compilation of logs of lower level than the given one; this in general isn't that significant, and is not recommended due to the loss of debugging that the logs would provide + +- `jemalloc`: replaces the default system memory allocator with [`jemalloc`](https://jemalloc.net/); this feature is unstable on Windows +- `asm-keccak`: replaces the default, pure-Rust implementation of Keccak256 with one implemented in assembly; see [the `keccak-asm` crate](https://github.com/DaniPopes/keccak-asm) for more details and supported targets +- `min-LEVEL-logs`, where `LEVEL` is one of `error`, `warn`, `info`, `debug`, `trace`: disables compilation of logs of lower level than the given one; this in general isn't that significant, and is not recommended due to the loss of debugging that the logs would provide You can activate features by passing them to the `--features` or `-F` Cargo flag; multiple features can be activated with a space- or comma-separated list to the flag: @@ -136,7 +142,7 @@ Rust Version (MSRV) which is listed under the `rust-version` key in Reth's If compilation fails with `(signal: 9, SIGKILL: kill)`, this could mean your machine ran out of memory during compilation. If you are on Docker, consider increasing the memory of the container, or use a [pre-built -binary](../installation/binaries.md). +binary](/installation/binaries). If compilation fails in either the `keccak-asm` or `sha3-asm` crates, it is likely that your current system configuration is not supported. See the [`keccak-asm` target table](https://github.com/DaniPopes/keccak-asm?tab=readme-ov-file#support) for supported targets. @@ -147,7 +153,7 @@ _(Thanks to Sigma Prime for this section from [their Lighthouse book](https://li ### Bus error (WSL2) -In WSL 2 on Windows, the default virtual disk size is set to 1TB. +In WSL 2 on Windows, the default virtual disk size is set to 1TB. You must increase the allocated disk size for your WSL2 instance before syncing reth. diff --git a/book/vocs/docs/pages/introduction/contributing.mdx b/book/vocs/docs/pages/introduction/contributing.mdx new file mode 100644 index 0000000000..63fc598715 --- /dev/null +++ b/book/vocs/docs/pages/introduction/contributing.mdx @@ -0,0 +1,258 @@ +# Contributing to Reth + +Reth has docs specifically geared for developers and contributors, including documentation on the structure and architecture of reth, the general workflow we employ, and other useful tips. + +## Getting Help + +Need support or have questions? Open a github issue and/or join the TG chat: + +- **GitHub Issues**: [Open an issue](https://github.com/paradigmxyz/reth/issues/new) for bugs or feature requests +- **Telegram Chat**: [Join our Telegram](https://t.me/paradigm_reth) for real-time support and discussions + +## Repository and Project Structure + +Reth is organized as a modular codebase with clear separation and a contributor friendly architecture, you can read about it in detail [here](https://github.com/paradigmxyz/reth/tree/main/docs). Here's the TL;DR: + +### Design + +Reth follows a modular architecture where each component can be used independently: + +- **Consensus**: Block validation and consensus rules +- **Storage**: Hybrid database with MDBX + static files +- **Networking**: P2P networking stack +- **RPC**: JSON-RPC server implementation +- **Engine**: Consensus layer integration +- **EVM**: Transaction execution +- **Node Builder**: High-level orchestration + +### Crates + +The repository is organized into focused crates under `/crates/`: + +``` +crates/ +├── consensus/ # Consensus and validation logic +├── storage/ # Database and storage implementations +├── net/ # Networking components +├── rpc/ # JSON-RPC server and APIs +├── engine/ # Engine API and consensus integration +├── evm/ # EVM execution +├── node/ # Node building and orchestration +├── ethereum/ # Ethereum-specific implementations +├── optimism/ # Optimism L2 support +└── ... +``` + +## Workflow: The Lifecycle of PRs + +### 1. Before You Start + +- Check existing issues to avoid duplicate work +- For large features, open an issue first to discuss the approach +- Fork the repository and create a feature branch + +### 2. Development Process + +#### Setting Up Your Environment + +```bash +# Clone your fork +git clone https://github.com/YOUR_USERNAME/reth.git +cd reth + +# Install dependencies and tools +# Use nightly Rust for formatting +rustup install nightly +rustup component add rustfmt --toolchain nightly + +# Run the validation suite +make pr +``` + +#### Code Style and Standards + +- **Formatting**: Use nightly rustfmt (`cargo +nightly fmt`) +- **Linting**: All clippy warnings must be addressed +- **Documentation**: Add doc comments for public APIs +- **Testing**: Include appropriate tests for your changes + +#### Recommended VS Code Settings + +Install the `rust-analyzer` extension and use these settings for the best development experience: + +```json +{ + "rust-analyzer.rustfmt.overrideCommand": ["rustfmt", "+nightly"], + "rust-analyzer.check.overrideCommand": [ + "cargo", + "clippy", + "--workspace", + "--message-format=json", + "--all-targets", + "--all-features" + ] +} +``` + +### 3. Testing Your Changes + +Reth uses comprehensive testing at multiple levels: + +#### Unit Tests + +Test specific functions and components: + +```bash +cargo test --package reth-ethereum-consensus +``` + +#### Integration Tests + +Test component interactions: + +```bash +cargo test --test integration_tests +``` + +#### Full Test Suite + +Run all tests including Ethereum Foundation tests: + +```bash +make test +``` + +#### Validation Suite + +Before submitting, always run: + +```bash +make pr +``` + +This runs: + +- Code formatting checks +- Clippy linting +- Documentation generation +- Full test suite + +### 4. Submitting Your PR + +#### Draft PRs for Large Features + +For substantial changes, open a draft PR early to get feedback on the approach. + +#### PR Requirements + +- [ ] Clear, descriptive title and description +- [ ] Tests for new functionality +- [ ] Documentation updates if needed +- [ ] All CI checks passing +- [ ] Commit messages follow conventional format + +#### Commit Message Format + +``` +type: brief description + +More detailed explanation if needed. + +- feat: new feature +- fix: bug fix +- docs: documentation changes +- refactor: code refactoring +- test: adding tests +- chore: maintenance tasks +``` + +### 5. Review Process + +#### Who Can Review + +Any community member can review PRs. We encourage participation from all skill levels. + +#### What Reviewers Look For + +- **Does the change improve Reth?** +- **Are there clear bugs or issues?** +- **Are commit messages clear and descriptive?** +- **Is the code well-tested?** +- **Is documentation updated appropriately?** + +#### Review Guidelines + +- Be constructive and respectful +- Provide specific, actionable feedback +- Focus on significant issues first +- Acknowledge good work and improvements + +## Releases: How Reth is Released + +### Release Schedule + +- **Regular releases**: Following semantic versioning +- **Security releases**: As needed for critical vulnerabilities +- **Pre-releases**: For testing major changes + +### Release Process + +1. **Version bump**: Update version numbers across crates +2. **Changelog**: Update `CHANGELOG.md` with notable changes +3. **Testing**: Final validation on testnet and mainnet +4. **Tagging**: Create release tags and GitHub releases +5. **Distribution**: Update package registries and Docker images + +### Release Criteria + +- All CI checks passing +- No known critical bugs +- Documentation up to date +- Backwards compatibility considerations addressed + +## Ways to Contribute + +### 💡 Feature Requests + +For feature requests, please include: + +- **Detailed explanation**: What should the feature do? +- **Context and motivation**: Why is this feature needed? +- **Examples**: How would it be used? +- **Similar tools**: References to similar functionality elsewhere + +### 📝 Documentation + +Documentation improvements are always welcome: + +- Add missing documentation +- Improve code examples +- Create tutorials or guides + +### 🔧 Code Contributions + +Contributing code changes: + +- Fix bugs identified in issues +- Implement requested features +- Improve performance +- Refactor for better maintainability + +## Code of Conduct + +Reth follows the [Rust Code of Conduct](https://www.rust-lang.org/conduct.html). We are committed to providing a welcoming and inclusive environment for all contributors. + +### Our Standards + +- Be respectful and constructive +- Focus on what's best for the community +- Show empathy towards other contributors +- Accept constructive criticism gracefully + +### Reporting Issues + +If you experience or witness behavior that violates our code of conduct, please report it to [georgios@paradigm.xyz](mailto:georgios@paradigm.xyz). + +:::note +Also read [CONTRIBUTING.md](https://github.com/paradigmxyz/reth/blob/main/CONTRIBUTING.md) for in depth guidelines. +::: diff --git a/book/vocs/docs/pages/introduction/why-reth.mdx b/book/vocs/docs/pages/introduction/why-reth.mdx new file mode 100644 index 0000000000..f140c0e312 --- /dev/null +++ b/book/vocs/docs/pages/introduction/why-reth.mdx @@ -0,0 +1,50 @@ +--- +description: Why Reth is the future of Ethereum infrastructure - powering everything from production staking to cutting-edge L2s and ZK applications. +--- + +# Why Reth? + +Reth is more than just another Ethereum client—it's the foundation upon which the next generation of blockchain infrastructure is being built. From powering production staking environments at institutions like Coinbase to enabling cutting-edge L2 sequencers and ZK applications, Reth represents the convergence of security, performance, and extensibility that the ecosystem demands. + +Every piece of crypto infrastructure will be touching Reth one way or another. Here's why the world's leading developers and institutions are choosing Reth as their node of choice. + +## Institutional-Grade Security + +Reth secures real value on Ethereum mainnet today, trusted by institutions like [Coinbase](https://x.com/CoinbasePltfrm/status/1933546893742579890) for production staking infrastructure. It powers RPC providers such as Alchemy. + +## Future Proof Performance + +Reth pushes the performance frontier across every dimension, from L2 sequencers to MEV block building. + +- **L2 Sequencer Performance**: Used by [Base](https://www.base.org/), other production L2s and also rollup-as-a-service providers such as [Conduit](https://conduit.xyz) which require high throughput and fast block times. +- **MEV & Block Building**: [rbuilder](https://github.com/flashbots/rbuilder) is an open-source implementation of a block builder built on Reth due to developer friendless and blazing fast performance. + +## Infinitely Customizable + +Reth's modular architecture means you are not locked into someone else's design decisions—build exactly the chain you need. + +- **Component-Based Design**: Swap out consensus, execution, mempool, or networking modules independently +- **Custom Transaction Types**: Build specialized DeFi chains, and unique economic models +- **Rapid Development**: Reth SDK accelerates custom blockchain development with pre-built components + +## ZK & Stateless Ready + +Reth is designed from the ground up to excel in the zero-knowledge future with stateless execution and modular architecture. + +[SP1](https://github.com/succinctlabs/sp1), a zkVM for proving arbitrary Rust programs, and [Ress](https://www.paradigm.xyz/2025/03/stateless-reth-nodes), an experimental stateless node, demonstrate how Reth enables scalable zero-knowledge applications for Ethereum. + +## Thriving Open Source Ecosystem + +The most important factor in Reth's success is our vibrant open source community building the future together. + +500+ geo-distributed developers from leading companies and academia have played a role to build Reth into what it is today. + +## Join the community + +Reth isn't just a tool—it's a movement toward better blockchain infrastructure. Whether you're running a validator, building the next generation of L2s, or creating cutting-edge ZK applications, Reth provides the foundation you need to succeed. + +**Ready to build the future?** + +- [Get Started](/run/ethereum) with running your first Reth node +- [Explore the SDK](/sdk/overview) to build custom blockchain infrastructure +- [Join the Community](https://github.com/paradigmxyz/reth) and contribute to the future of Ethereum diff --git a/book/jsonrpc/admin.md b/book/vocs/docs/pages/jsonrpc/admin.mdx similarity index 79% rename from book/jsonrpc/admin.md rename to book/vocs/docs/pages/jsonrpc/admin.mdx index b85cd194b6..cf1ef29c05 100644 --- a/book/jsonrpc/admin.md +++ b/book/vocs/docs/pages/jsonrpc/admin.mdx @@ -1,10 +1,13 @@ +--- +description: Admin API for node configuration and peer management. +--- # `admin` Namespace The `admin` API allows you to configure your node, including adding and removing peers. -> **Note** -> -> As this namespace can configure your node at runtime, it is generally **not advised** to expose it publicly. +:::note +As this namespace can configure your node at runtime, it is generally **not advised** to expose it publicly. +::: ## `admin_addPeer` @@ -13,7 +16,7 @@ Add the given peer to the current peer set of the node. The method accepts a single argument, the [`enode`][enode] URL of the remote peer to connect to, and returns a `bool` indicating whether the peer was accepted or not. | Client | Method invocation | -|--------|------------------------------------------------| +| ------ | ---------------------------------------------- | | RPC | `{"method": "admin_addPeer", "params": [url]}` | ### Example @@ -27,9 +30,9 @@ The method accepts a single argument, the [`enode`][enode] URL of the remote pee Disconnects from a peer if the connection exists. Returns a `bool` indicating whether the peer was successfully removed or not. -| Client | Method invocation | -|--------|----------------------------------------------------| -| RPC | `{"method": "admin_removePeer", "params": [url]}` | +| Client | Method invocation | +| ------ | ------------------------------------------------- | +| RPC | `{"method": "admin_removePeer", "params": [url]}` | ### Example @@ -45,7 +48,7 @@ Adds the given peer to a list of trusted peers, which allows the peer to always It returns a `bool` indicating whether the peer was added to the list or not. | Client | Method invocation | -|--------|-------------------------------------------------------| +| ------ | ----------------------------------------------------- | | RPC | `{"method": "admin_addTrustedPeer", "params": [url]}` | ### Example @@ -62,7 +65,7 @@ Removes a remote node from the trusted peer set, but it does not disconnect it a Returns true if the peer was successfully removed. | Client | Method invocation | -|--------|----------------------------------------------------------| +| ------ | -------------------------------------------------------- | | RPC | `{"method": "admin_removeTrustedPeer", "params": [url]}` | ### Example @@ -79,7 +82,7 @@ Returns all information known about the running node. These include general information about the node itself, as well as what protocols it participates in, its IP and ports. | Client | Method invocation | -|--------|--------------------------------| +| ------ | ------------------------------ | | RPC | `{"method": "admin_nodeInfo"}` | ### Example @@ -121,9 +124,9 @@ Like other subscription methods, this returns the ID of the subscription, which To unsubscribe from peer events, call `admin_peerEvents_unsubscribe` with the subscription ID. -| Client | Method invocation | -|--------|-------------------------------------------------------| -| RPC | `{"method": "admin_peerEvents", "params": []}` | +| Client | Method invocation | +| ------ | ------------------------------------------------------------ | +| RPC | `{"method": "admin_peerEvents", "params": []}` | | RPC | `{"method": "admin_peerEvents_unsubscribe", "params": [id]}` | ### Event Types @@ -132,20 +135,20 @@ The subscription emits events with the following structure: ```json { - "jsonrpc": "2.0", - "method": "admin_subscription", - "params": { - "subscription": "0xcd0c3e8af590364c09d0fa6a1210faf5", - "result": { - "type": "add", // or "drop", "error" - "peer": { - "id": "44826a5d6a55f88a18298bca4773fca5749cdc3a5c9f308aa7d810e9b31123f3e7c5fba0b1d70aac5308426f47df2a128a6747040a3815cc7dd7167d03be320d", - "enode": "enode://44826a5d6a55f88a18298bca4773fca5749cdc3a5c9f308aa7d810e9b31123f3e7c5fba0b1d70aac5308426f47df2a128a6747040a3815cc7dd7167d03be320d@192.168.1.1:30303", - "addr": "192.168.1.1:30303" - }, - "error": "reason for disconnect or error" // only present for "drop" and "error" events + "jsonrpc": "2.0", + "method": "admin_subscription", + "params": { + "subscription": "0xcd0c3e8af590364c09d0fa6a1210faf5", + "result": { + "type": "add", // or "drop", "error" + "peer": { + "id": "44826a5d6a55f88a18298bca4773fca5749cdc3a5c9f308aa7d810e9b31123f3e7c5fba0b1d70aac5308426f47df2a128a6747040a3815cc7dd7167d03be320d", + "enode": "enode://44826a5d6a55f88a18298bca4773fca5749cdc3a5c9f308aa7d810e9b31123f3e7c5fba0b1d70aac5308426f47df2a128a6747040a3815cc7dd7167d03be320d@192.168.1.1:30303", + "addr": "192.168.1.1:30303" + }, + "error": "reason for disconnect or error" // only present for "drop" and "error" events + } } - } } ``` diff --git a/book/jsonrpc/debug.md b/book/vocs/docs/pages/jsonrpc/debug.mdx similarity index 80% rename from book/jsonrpc/debug.md rename to book/vocs/docs/pages/jsonrpc/debug.mdx index 7965e2e0d5..aa3a47685c 100644 --- a/book/jsonrpc/debug.md +++ b/book/vocs/docs/pages/jsonrpc/debug.mdx @@ -1,3 +1,6 @@ +--- +description: Debug API for inspecting Ethereum state and traces. +--- # `debug` Namespace The `debug` API provides several methods to inspect the Ethereum state, including Geth-style traces. @@ -7,7 +10,7 @@ The `debug` API provides several methods to inspect the Ethereum state, includin Returns an RLP-encoded header. | Client | Method invocation | -|--------|-------------------------------------------------------| +| ------ | ----------------------------------------------------- | | RPC | `{"method": "debug_getRawHeader", "params": [block]}` | ## `debug_getRawBlock` @@ -15,7 +18,7 @@ Returns an RLP-encoded header. Retrieves and returns the RLP encoded block by number, hash or tag. | Client | Method invocation | -|--------|------------------------------------------------------| +| ------ | ---------------------------------------------------- | | RPC | `{"method": "debug_getRawBlock", "params": [block]}` | ## `debug_getRawTransaction` @@ -23,7 +26,7 @@ Retrieves and returns the RLP encoded block by number, hash or tag. Returns an EIP-2718 binary-encoded transaction. | Client | Method invocation | -|--------|--------------------------------------------------------------| +| ------ | ------------------------------------------------------------ | | RPC | `{"method": "debug_getRawTransaction", "params": [tx_hash]}` | ## `debug_getRawReceipts` @@ -31,7 +34,7 @@ Returns an EIP-2718 binary-encoded transaction. Returns an array of EIP-2718 binary-encoded receipts. | Client | Method invocation | -|--------|---------------------------------------------------------| +| ------ | ------------------------------------------------------- | | RPC | `{"method": "debug_getRawReceipts", "params": [block]}` | ## `debug_getBadBlocks` @@ -39,7 +42,7 @@ Returns an array of EIP-2718 binary-encoded receipts. Returns an array of recent bad blocks that the client has seen on the network. | Client | Method invocation | -|--------|--------------------------------------------------| +| ------ | ------------------------------------------------ | | RPC | `{"method": "debug_getBadBlocks", "params": []}` | ## `debug_traceChain` @@ -47,7 +50,7 @@ Returns an array of recent bad blocks that the client has seen on the network. Returns the structured logs created during the execution of EVM between two blocks (excluding start) as a JSON object. | Client | Method invocation | -|--------|----------------------------------------------------------------------| +| ------ | -------------------------------------------------------------------- | | RPC | `{"method": "debug_traceChain", "params": [start_block, end_block]}` | ## `debug_traceBlock` @@ -57,11 +60,11 @@ The `debug_traceBlock` method will return a full stack trace of all invoked opco This expects an RLP-encoded block. > **Note** -> +> > The parent of this block must be present, or it will fail. | Client | Method invocation | -|--------|---------------------------------------------------------| +| ------ | ------------------------------------------------------- | | RPC | `{"method": "debug_traceBlock", "params": [rlp, opts]}` | ## `debug_traceBlockByHash` @@ -69,7 +72,7 @@ This expects an RLP-encoded block. Similar to [`debug_traceBlock`](#debug_traceblock), `debug_traceBlockByHash` accepts a block hash and will replay the block that is already present in the database. | Client | Method invocation | -|--------|----------------------------------------------------------------------| +| ------ | -------------------------------------------------------------------- | | RPC | `{"method": "debug_traceBlockByHash", "params": [block_hash, opts]}` | ## `debug_traceBlockByNumber` @@ -77,15 +80,15 @@ Similar to [`debug_traceBlock`](#debug_traceblock), `debug_traceBlockByHash` acc Similar to [`debug_traceBlockByHash`](#debug_traceblockbyhash), `debug_traceBlockByNumber` accepts a block number and will replay the block that is already present in the database. | Client | Method invocation | -|--------|--------------------------------------------------------------------------| +| ------ | ------------------------------------------------------------------------ | | RPC | `{"method": "debug_traceBlockByNumber", "params": [block_number, opts]}` | ## `debug_traceTransaction` The `debug_traceTransaction` debugging method will attempt to run the transaction in the exact same manner as it was executed on the network. It will replay any transaction that may have been executed prior to this one before it will finally attempt to execute the transaction that corresponds to the given hash. -| Client | Method invocation | -|--------|-------------------------------------------------------------| +| Client | Method invocation | +| ------ | ----------------------------------------------------------------- | | RPC | `{"method": "debug_traceTransaction", "params": [tx_hash, opts]}` | ## `debug_traceCall` @@ -97,5 +100,5 @@ The first argument (just as in `eth_call`) is a transaction request. The block can optionally be specified either by hash or by number as the second argument. | Client | Method invocation | -|--------|-----------------------------------------------------------------------| +| ------ | --------------------------------------------------------------------- | | RPC | `{"method": "debug_traceCall", "params": [call, block_number, opts]}` | diff --git a/book/jsonrpc/eth.md b/book/vocs/docs/pages/jsonrpc/eth.mdx similarity index 72% rename from book/jsonrpc/eth.md rename to book/vocs/docs/pages/jsonrpc/eth.mdx index 0a3003c405..052beb4c7b 100644 --- a/book/jsonrpc/eth.md +++ b/book/vocs/docs/pages/jsonrpc/eth.mdx @@ -1,3 +1,7 @@ +--- +description: Standard Ethereum JSON-RPC API methods. +--- + # `eth` Namespace Documentation for the API methods in the `eth` namespace can be found on [ethereum.org](https://ethereum.org/en/developers/docs/apis/json-rpc/). diff --git a/book/jsonrpc/intro.md b/book/vocs/docs/pages/jsonrpc/intro.mdx similarity index 70% rename from book/jsonrpc/intro.md rename to book/vocs/docs/pages/jsonrpc/intro.mdx index 6f9b894988..dac173142a 100644 --- a/book/jsonrpc/intro.md +++ b/book/vocs/docs/pages/jsonrpc/intro.mdx @@ -1,3 +1,7 @@ +--- +description: Overview of Reth's JSON-RPC API and namespaces. +--- + # JSON-RPC You can interact with Reth over JSON-RPC. Reth supports all standard Ethereum JSON-RPC API methods. @@ -12,22 +16,21 @@ Each namespace must be explicitly enabled. The methods are grouped into namespaces, which are listed below: -| Namespace | Description | Sensitive | -|-------------------------|--------------------------------------------------------------------------------------------------------|-----------| -| [`eth`](./eth.md) | The `eth` API allows you to interact with Ethereum. | Maybe | -| [`web3`](./web3.md) | The `web3` API provides utility functions for the web3 client. | No | -| [`net`](./net.md) | The `net` API provides access to network information of the node. | No | -| [`txpool`](./txpool.md) | The `txpool` API allows you to inspect the transaction pool. | No | -| [`debug`](./debug.md) | The `debug` API provides several methods to inspect the Ethereum state, including Geth-style traces. | No | -| [`trace`](./trace.md) | The `trace` API provides several methods to inspect the Ethereum state, including Parity-style traces. | No | -| [`admin`](./admin.md) | The `admin` API allows you to configure your node. | **Yes** | -| [`rpc`](./rpc.md) | The `rpc` API provides information about the RPC server and its modules. | No | +| Namespace | Description | Sensitive | +| -------------------- | ------------------------------------------------------------------------------------------------------ | --------- | +| [`eth`](./eth) | The `eth` API allows you to interact with Ethereum. | Maybe | +| [`web3`](./web3) | The `web3` API provides utility functions for the web3 client. | No | +| [`net`](./net) | The `net` API provides access to network information of the node. | No | +| [`txpool`](./txpool) | The `txpool` API allows you to inspect the transaction pool. | No | +| [`debug`](./debug) | The `debug` API provides several methods to inspect the Ethereum state, including Geth-style traces. | No | +| [`trace`](./trace) | The `trace` API provides several methods to inspect the Ethereum state, including Parity-style traces. | No | +| [`admin`](./admin) | The `admin` API allows you to configure your node. | **Yes** | +| [`rpc`](./rpc) | The `rpc` API provides information about the RPC server and its modules. | No | Note that some APIs are sensitive, since they can be used to configure your node (`admin`), or access accounts stored on the node (`eth`). Generally, it is advisable to not expose any JSONRPC namespace publicly, unless you know what you are doing. - ## Transports Reth supports HTTP, WebSockets and IPC. @@ -90,10 +93,10 @@ Because WebSockets are bidirectional, nodes can push events to clients, which en The configuration of the WebSocket server follows the same pattern as the HTTP server: -- Enable it using `--ws` -- Configure the server address by passing `--ws.addr` and `--ws.port` (default `8546`) -- Configure cross-origin requests using `--ws.origins` -- Enable APIs using `--ws.api` +- Enable it using `--ws` +- Configure the server address by passing `--ws.addr` and `--ws.port` (default `8546`) +- Configure cross-origin requests using `--ws.origins` +- Enable APIs using `--ws.api` ### IPC diff --git a/book/jsonrpc/net.md b/book/vocs/docs/pages/jsonrpc/net.mdx similarity index 82% rename from book/jsonrpc/net.md rename to book/vocs/docs/pages/jsonrpc/net.mdx index ac40c75b2a..145b9c2767 100644 --- a/book/jsonrpc/net.md +++ b/book/vocs/docs/pages/jsonrpc/net.mdx @@ -1,3 +1,7 @@ +--- +description: net_ namespace for Ethereum nodes. +--- + # `net` Namespace The `net` API provides information about the networking component of the node. @@ -7,7 +11,7 @@ The `net` API provides information about the networking component of the node. Returns a `bool` indicating whether or not the node is listening for network connections. | Client | Method invocation | -|--------|---------------------------------------------| +| ------ | ------------------------------------------- | | RPC | `{"method": "net_listening", "params": []}` | ### Example @@ -22,7 +26,7 @@ Returns a `bool` indicating whether or not the node is listening for network con Returns the number of peers connected to the node. | Client | Method invocation | -|--------|---------------------------------------------| +| ------ | ------------------------------------------- | | RPC | `{"method": "net_peerCount", "params": []}` | ### Example @@ -37,7 +41,7 @@ Returns the number of peers connected to the node. Returns the network ID (e.g. 1 for mainnet) | Client | Method invocation | -|--------|-------------------------------------------| +| ------ | ----------------------------------------- | | RPC | `{"method": "net_version", "params": []}` | ### Example @@ -45,4 +49,4 @@ Returns the network ID (e.g. 1 for mainnet) ```js // > {"jsonrpc":"2.0","id":1,"method":"net_version","params":[]} {"jsonrpc":"2.0","id":1,"result":1} -``` \ No newline at end of file +``` diff --git a/book/jsonrpc/rpc.md b/book/vocs/docs/pages/jsonrpc/rpc.mdx similarity index 91% rename from book/jsonrpc/rpc.md rename to book/vocs/docs/pages/jsonrpc/rpc.mdx index 0a4739718b..c85babcfe3 100644 --- a/book/jsonrpc/rpc.md +++ b/book/vocs/docs/pages/jsonrpc/rpc.mdx @@ -1,3 +1,7 @@ +--- +description: rpc_ namespace for retrieving server information such as enabled namespaces +--- + # `rpc` Namespace The `rpc` API provides methods to get information about the RPC server itself, such as the enabled namespaces. @@ -7,7 +11,7 @@ The `rpc` API provides methods to get information about the RPC server itself, s Lists the enabled RPC namespaces and the versions of each. | Client | Method invocation | -|--------|-------------------------------------------| +| ------ | ----------------------------------------- | | RPC | `{"method": "rpc_modules", "params": []}` | ### Example diff --git a/book/jsonrpc/trace.md b/book/vocs/docs/pages/jsonrpc/trace.mdx similarity index 86% rename from book/jsonrpc/trace.md rename to book/vocs/docs/pages/jsonrpc/trace.mdx index ba0f2490b5..38157e4423 100644 --- a/book/jsonrpc/trace.md +++ b/book/vocs/docs/pages/jsonrpc/trace.mdx @@ -1,33 +1,37 @@ +--- +description: Trace API for inspecting Ethereum state and transactions. +--- + # `trace` Namespace - +{/* TODO: We should probably document the format of the traces themselves, OE does not do that */} The `trace` API provides several methods to inspect the Ethereum state, including Parity-style traces. -A similar module exists (with other debug functions) with Geth-style traces ([`debug`](./debug.md)). +A similar module exists (with other debug functions) with Geth-style traces ([`debug`](./debug)). The `trace` API gives deeper insight into transaction processing. There are two types of methods in this API: -- **Ad-hoc tracing APIs** for performing diagnostics on calls or transactions (historical or hypothetical). -- **Transaction-trace filtering APIs** for getting full externality traces on any transaction executed by reth. +- **Ad-hoc tracing APIs** for performing diagnostics on calls or transactions (historical or hypothetical). +- **Transaction-trace filtering APIs** for getting full externality traces on any transaction executed by reth. ## Ad-hoc tracing APIs Ad-hoc tracing APIs allow you to perform diagnostics on calls or transactions (historical or hypothetical), including: -- Transaction traces (`trace`) -- VM traces (`vmTrace`) -- State difference traces (`stateDiff`) +- Transaction traces (`trace`) +- VM traces (`vmTrace`) +- State difference traces (`stateDiff`) The ad-hoc tracing APIs are: -- [`trace_call`](#trace_call) -- [`trace_callMany`](#trace_callmany) -- [`trace_rawTransaction`](#trace_rawtransaction) -- [`trace_replayBlockTransactions`](#trace_replayblocktransactions) -- [`trace_replayTransaction`](#trace_replaytransaction) +- [`trace_call`](#trace_call) +- [`trace_callMany`](#trace_callmany) +- [`trace_rawTransaction`](#trace_rawtransaction) +- [`trace_replayBlockTransactions`](#trace_replayblocktransactions) +- [`trace_replayTransaction`](#trace_replaytransaction) ## Transaction-trace filtering APIs @@ -37,10 +41,10 @@ Information returned includes the execution of all contract creations, destructi The transaction trace filtering APIs are: -- [`trace_block`](#trace_block) -- [`trace_filter`](#trace_filter) -- [`trace_get`](#trace_get) -- [`trace_transaction`](#trace_transaction) +- [`trace_block`](#trace_block) +- [`trace_filter`](#trace_filter) +- [`trace_get`](#trace_get) +- [`trace_transaction`](#trace_transaction) ## `trace_call` @@ -53,7 +57,7 @@ The second parameter is an array of one or more trace types (`vmTrace`, `trace`, The third and optional parameter is a block number, block hash, or a block tag (`latest`, `finalized`, `safe`, `earliest`, `pending`). | Client | Method invocation | -|--------|-----------------------------------------------------------| +| ------ | --------------------------------------------------------- | | RPC | `{"method": "trace_call", "params": [tx, type[], block]}` | ### Example @@ -90,7 +94,7 @@ The first parameter is a list of call traces, where each call trace is of the fo The second and optional parameter is a block number, block hash, or a block tag (`latest`, `finalized`, `safe`, `earliest`, `pending`). | Client | Method invocation | -|--------|--------------------------------------------------------| +| ------ | ------------------------------------------------------ | | RPC | `{"method": "trace_call", "params": [trace[], block]}` | ### Example @@ -154,7 +158,7 @@ The second and optional parameter is a block number, block hash, or a block tag Traces a call to `eth_sendRawTransaction` without making the call, returning the traces. | Client | Method invocation | -|--------|--------------------------------------------------------| +| ------ | ------------------------------------------------------ | | RPC | `{"method": "trace_call", "params": [raw_tx, type[]]}` | ### Example @@ -187,7 +191,7 @@ Traces a call to `eth_sendRawTransaction` without making the call, returning the Replays all transactions in a block returning the requested traces for each transaction. | Client | Method invocation | -|--------|--------------------------------------------------------------------------| +| ------ | ------------------------------------------------------------------------ | | RPC | `{"method": "trace_replayBlockTransactions", "params": [block, type[]]}` | ### Example @@ -224,7 +228,7 @@ Replays all transactions in a block returning the requested traces for each tran Replays a transaction, returning the traces. | Client | Method invocation | -|--------|----------------------------------------------------------------------| +| ------ | -------------------------------------------------------------------- | | RPC | `{"method": "trace_replayTransaction", "params": [tx_hash, type[]]}` | ### Example @@ -257,7 +261,7 @@ Replays a transaction, returning the traces. Returns traces created at given block. | Client | Method invocation | -|--------|------------------------------------------------| +| ------ | ---------------------------------------------- | | RPC | `{"method": "trace_block", "params": [block]}` | ### Example @@ -300,17 +304,17 @@ Returns traces matching given filter. Filters are objects with the following properties: -- `fromBlock`: Returns traces from the given block (a number, hash, or a tag like `latest`). -- `toBlock`: Returns traces to the given block. -- `fromAddress`: Sent from these addresses -- `toAddress`: Sent to these addresses -- `after`: The offset trace number -- `count`: The number of traces to display in a batch +- `fromBlock`: Returns traces from the given block (a number, hash, or a tag like `latest`). +- `toBlock`: Returns traces to the given block. +- `fromAddress`: Sent from these addresses +- `toAddress`: Sent to these addresses +- `after`: The offset trace number +- `count`: The number of traces to display in a batch All properties are optional. | Client | Method invocation | -|--------|--------------------------------------------------| +| ------ | ------------------------------------------------ | | RPC | `{"method": "trace_filter", "params": [filter]}` | ### Example @@ -352,7 +356,7 @@ All properties are optional. Returns trace at given position. | Client | Method invocation | -|--------|----------------------------------------------------------| +| ------ | -------------------------------------------------------- | | RPC | `{"method": "trace_get", "params": [tx_hash,indices[]]}` | ### Example @@ -393,7 +397,7 @@ Returns trace at given position. Returns all traces of given transaction | Client | Method invocation | -|--------|--------------------------------------------------------| +| ------ | ------------------------------------------------------ | | RPC | `{"method": "trace_transaction", "params": [tx_hash]}` | ### Example @@ -430,4 +434,4 @@ Returns all traces of given transaction ... ] } -``` \ No newline at end of file +``` diff --git a/book/jsonrpc/txpool.md b/book/vocs/docs/pages/jsonrpc/txpool.mdx similarity index 81% rename from book/jsonrpc/txpool.md rename to book/vocs/docs/pages/jsonrpc/txpool.mdx index cb9e9c0e69..57f89c643c 100644 --- a/book/jsonrpc/txpool.md +++ b/book/vocs/docs/pages/jsonrpc/txpool.mdx @@ -1,3 +1,7 @@ +--- +description: API for inspecting the transaction pool. +--- + # `txpool` Namespace The `txpool` API allows you to inspect the transaction pool. @@ -9,7 +13,7 @@ Returns the details of all transactions currently pending for inclusion in the n See [here](https://geth.ethereum.org/docs/rpc/ns-txpool#txpool-content) for more details | Client | Method invocation | -|--------|----------------------------------------------| +| ------ | -------------------------------------------- | | RPC | `{"method": "txpool_content", "params": []}` | ## `txpool_contentFrom` @@ -19,7 +23,7 @@ Retrieves the transactions contained within the txpool, returning pending as wel See [here](https://geth.ethereum.org/docs/rpc/ns-txpool#txpool-contentfrom) for more details | Client | Method invocation | -|--------|---------------------------------------------------------| +| ------ | ------------------------------------------------------- | | RPC | `{"method": "txpool_contentFrom", "params": [address]}` | ## `txpool_inspect` @@ -29,7 +33,7 @@ Returns a summary of all the transactions currently pending for inclusion in the See [here](https://geth.ethereum.org/docs/rpc/ns-txpool#txpool-inspect) for more details | Client | Method invocation | -|--------|----------------------------------------------| +| ------ | -------------------------------------------- | | RPC | `{"method": "txpool_inspect", "params": []}` | ## `txpool_status` @@ -39,5 +43,5 @@ Returns the number of transactions currently pending for inclusion in the next b See [here](https://geth.ethereum.org/docs/rpc/ns-txpool#txpool-status) for more details | Client | Method invocation | -|--------|---------------------------------------------| -| RPC | `{"method": "txpool_status", "params": []}` | \ No newline at end of file +| ------ | ------------------------------------------- | +| RPC | `{"method": "txpool_status", "params": []}` | diff --git a/book/jsonrpc/web3.md b/book/vocs/docs/pages/jsonrpc/web3.mdx similarity index 83% rename from book/jsonrpc/web3.md rename to book/vocs/docs/pages/jsonrpc/web3.mdx index 8221e5c250..f1eb68bcaf 100644 --- a/book/jsonrpc/web3.md +++ b/book/vocs/docs/pages/jsonrpc/web3.mdx @@ -1,3 +1,7 @@ +--- +description: Web3 API utility methods for Ethereum clients. +--- + # `web3` Namespace The `web3` API provides utility functions for the web3 client. @@ -6,9 +10,8 @@ The `web3` API provides utility functions for the web3 client. Get the web3 client version. - | Client | Method invocation | -|--------|------------------------------------| +| ------ | ---------------------------------- | | RPC | `{"method": "web3_clientVersion"}` | ### Example @@ -23,7 +26,7 @@ Get the web3 client version. Get the Keccak-256 hash of the given data. | Client | Method invocation | -|--------|----------------------------------------------| +| ------ | -------------------------------------------- | | RPC | `{"method": "web3_sha3", "params": [bytes]}` | ### Example @@ -36,4 +39,4 @@ Get the Keccak-256 hash of the given data. ```js // > {"jsonrpc":"2.0","id":1,"method":"web3_sha3","params":["0x7275737420697320617765736f6d65"]} {"jsonrpc":"2.0","id":1,"result":"0xe421b3428564a5c509ac118bad93a3b84485ec3f927e214b0c4c23076d4bc4e0"} -``` \ No newline at end of file +``` diff --git a/book/intro.md b/book/vocs/docs/pages/overview.mdx similarity index 72% rename from book/intro.md rename to book/vocs/docs/pages/overview.mdx index 6abd3da7ac..e41ca3ad83 100644 --- a/book/intro.md +++ b/book/vocs/docs/pages/overview.mdx @@ -1,15 +1,14 @@ -# Reth Book -_Documentation for Reth users and developers._ +--- +description: Reth - A secure, performant, and modular blockchain SDK and Ethereum node. +--- -[![Telegram Chat][tg-badge]][tg-url] +# Reth [Documentation for Reth users and developers] Reth (short for Rust Ethereum, [pronunciation](https://twitter.com/kelvinfichter/status/1597653609411268608)) is an **Ethereum full node implementation that is focused on being user-friendly, highly modular, as well as being fast and efficient.** Reth is production ready, and suitable for usage in mission-critical environments such as staking or high-uptime services. We also actively recommend professional node operators to switch to Reth in production for performance and cost reasons in use cases where high performance with great margins is required such as RPC, MEV, Indexing, Simulations, and P2P activities. - - - +![Reth](https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-prod.png) ## What is this about? @@ -60,8 +59,9 @@ We envision that Reth will be configurable enough for the tradeoffs that each te ## Who is this for? Reth is a new Ethereum full node that allows users to sync and interact with the entire blockchain, including its historical state if in archive mode. -- Full node: It can be used as a full node, which stores and processes the entire blockchain, validates blocks and transactions, and participates in the consensus process. -- Archive node: It can also be used as an archive node, which stores the entire history of the blockchain and is useful for applications that need access to historical data. + +- Full node: It can be used as a full node, which stores and processes the entire blockchain, validates blocks and transactions, and participates in the consensus process. +- Archive node: It can also be used as an archive node, which stores the entire history of the blockchain and is useful for applications that need access to historical data. As a data engineer/analyst, or as a data indexer, you'll want to use Archive mode. For all other use cases where historical access is not needed, you can use Full mode. @@ -79,21 +79,35 @@ We have completed an audit of the [Reth v1.0.0-rc.2](https://github.com/paradigm [Revm](https://github.com/bluealloy/revm) (the EVM used in Reth) underwent an audit with [Guido Vranken](https://twitter.com/guidovranken) (#1 [Ethereum Bug Bounty](https://ethereum.org/en/bug-bounty)). We will publish the results soon. +## Reth Metrics + +We operate several public Reth nodes across different networks. You can monitor their performance metrics through our public Grafana dashboards: + +| Name | Chain ID | Type | Grafana | +| -------- | -------- | ------- | ---------------------------------------------------------------------------------- | +| Ethereum | 1 | Full | [View](https://reth.ithaca.xyz/public-dashboards/23ceb3bd26594e349aaaf2bcf336d0d4) | +| Ethereum | 1 | Archive | [View](https://reth.ithaca.xyz/public-dashboards/a49fa110dc9149298fa6763d5c89c8c0) | +| Base | 8453 | Archive | [View](https://reth.ithaca.xyz/public-dashboards/b3e9f2e668ee4b86960b7fac691b5e64) | +| OP | 10 | Archive | [View](https://reth.ithaca.xyz/public-dashboards/aa32f6c39a664f9aa371399b59622527) | + +:::tip +Want to set up metrics for your own Reth node? Check out our [monitoring guide](/run/monitoring) to learn how to configure Prometheus metrics and build your own dashboards. +::: ## Sections Here are some useful sections to jump to: -- Install Reth by following the [guide](./installation/installation.md). -- Sync your node on any [official network](./run/run-a-node.md). -- View [statistics and metrics](./run/observability.md) about your node. -- Query the [JSON-RPC](./jsonrpc/intro.md) using Foundry's `cast` or `curl`. -- Set up your [development environment and contribute](./developers/contribute.md)! +- Install Reth by following the [guide](/installation/overview). +- Sync your node on any [official network](/run/overview). +- View [statistics and metrics](/run/monitoring) about your node. +- Query the [JSON-RPC](/jsonrpc/intro) using Foundry's `cast` or `curl`. +- Set up your [development environment and contribute](/introduction/contributing)! -> 📖 **About this book** -> -> The book is continuously rendered [here](https://paradigmxyz.github.io/reth/)! -> You can contribute to this book on [GitHub][gh-book]. +:::note +The book is continuously rendered [here](https://reth.rs)! +You can contribute to the docs on [GitHub][gh-book]. +::: [tg-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fparadigm%5Freth [tg-url]: https://t.me/paradigm_reth diff --git a/book/run/config.md b/book/vocs/docs/pages/run/configuration.mdx similarity index 90% rename from book/run/config.md rename to book/vocs/docs/pages/run/configuration.mdx index bb28d855de..8f34cfc691 100644 --- a/book/run/config.md +++ b/book/vocs/docs/pages/run/configuration.mdx @@ -1,32 +1,36 @@ +--- +description: How to configure Reth using reth.toml and its options. +--- + # Configuring Reth Reth places a configuration file named `reth.toml` in the data directory specified when starting the node. It is written in the [TOML] format. The default data directory is platform dependent: -- Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/` -- Windows: `{FOLDERID_RoamingAppData}/reth/` -- macOS: `$HOME/Library/Application Support/reth/` +- Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/` +- Windows: `{FOLDERID_RoamingAppData}/reth/` +- macOS: `$HOME/Library/Application Support/reth/` The configuration file contains the following sections: -- [`[stages]`](#the-stages-section) -- Configuration of the individual sync stages - - [`headers`](#headers) - - [`bodies`](#bodies) - - [`sender_recovery`](#sender_recovery) - - [`execution`](#execution) - - [`account_hashing`](#account_hashing) - - [`storage_hashing`](#storage_hashing) - - [`merkle`](#merkle) - - [`transaction_lookup`](#transaction_lookup) - - [`index_account_history`](#index_account_history) - - [`index_storage_history`](#index_storage_history) -- [`[peers]`](#the-peers-section) - - [`connection_info`](#connection_info) - - [`reputation_weights`](#reputation_weights) - - [`backoff_durations`](#backoff_durations) -- [`[sessions]`](#the-sessions-section) -- [`[prune]`](#the-prune-section) +- [`[stages]`](#the-stages-section) -- Configuration of the individual sync stages + - [`headers`](#headers) + - [`bodies`](#bodies) + - [`sender_recovery`](#sender_recovery) + - [`execution`](#execution) + - [`account_hashing`](#account_hashing) + - [`storage_hashing`](#storage_hashing) + - [`merkle`](#merkle) + - [`transaction_lookup`](#transaction_lookup) + - [`index_account_history`](#index_account_history) + - [`index_storage_history`](#index_storage_history) +- [`[peers]`](#the-peers-section) + - [`connection_info`](#connection_info) + - [`reputation_weights`](#reputation_weights) + - [`backoff_durations`](#backoff_durations) +- [`[sessions]`](#the-sessions-section) +- [`[prune]`](#the-prune-section) ## The `[stages]` section @@ -305,8 +309,8 @@ The sessions section configures the internal behavior of a single peer-to-peer c You can configure the session buffer sizes, which limits the amount of pending events (incoming messages) and commands (outgoing messages) each session can hold before it will start to ignore messages. > **Note** -> -> These buffers are allocated *per peer*, which means that increasing the buffer sizes can have large impact on memory consumption. +> +> These buffers are allocated _per peer_, which means that increasing the buffer sizes can have large impact on memory consumption. ```toml [sessions] @@ -342,10 +346,11 @@ No pruning, run as archive node. ### Example of the custom pruning configuration This configuration will: -- Run pruning every 5 blocks -- Continuously prune all transaction senders, account history and storage history before the block `head-100_000`, -i.e. keep the data for the last `100_000` blocks -- Prune all receipts before the block 1920000, i.e. keep receipts from the block 1920000 + +- Run pruning every 5 blocks +- Continuously prune all transaction senders, account history and storage history before the block `head-100_000`, + i.e. keep the data for the last `100_000` blocks +- Prune all receipts before the block 1920000, i.e. keep receipts from the block 1920000 ```toml [prune] @@ -370,6 +375,7 @@ storage_history = { distance = 100_000 } # Prune all historical storage states b ``` We can also prune receipts more granular, using the logs filtering: + ```toml # Receipts pruning configuration by retaining only those receipts that contain logs emitted # by the specified addresses, discarding all others. This setting is overridden by `receipts`. diff --git a/book/run/mainnet.md b/book/vocs/docs/pages/run/ethereum.mdx similarity index 73% rename from book/run/mainnet.md rename to book/vocs/docs/pages/run/ethereum.mdx index c4908971f6..7e0d01daa1 100644 --- a/book/run/mainnet.md +++ b/book/vocs/docs/pages/run/ethereum.mdx @@ -1,3 +1,7 @@ +--- +description: How to run Reth on Ethereum mainnet and testnets. +--- + # Running Reth on Ethereum Mainnet or testnets Reth is an [_execution client_](https://ethereum.org/en/developers/docs/nodes-and-clients/#execution-clients). After Ethereum's transition to Proof of Stake (aka the Merge) it became required to run a [_consensus client_](https://ethereum.org/en/developers/docs/nodes-and-clients/#consensus-clients) along your execution client in order to sync into any "post-Merge" network. This is because the Ethereum execution layer now outsources consensus to a separate component, known as the consensus client. @@ -6,12 +10,12 @@ Consensus clients decide what blocks are part of the chain, while execution clie By running both an execution client like Reth and a consensus client, such as Lighthouse 🦀 (which we will assume for this guide), you can effectively contribute to the Ethereum network and participate in the consensus process, even if you don't intend to run validators. -| Client | Role | -|-------------|--------------------------------------------------| -| Execution | Validates transactions and blocks | -| | (checks their validity and global state) | -| Consensus | Determines which blocks are part of the chain | -| | (makes consensus decisions) | +| Client | Role | +| --------- | --------------------------------------------- | +| Execution | Validates transactions and blocks | +| | (checks their validity and global state) | +| Consensus | Determines which blocks are part of the chain | +| | (makes consensus decisions) | ## Running the Reth Node @@ -24,15 +28,22 @@ reth node ``` And to start the full node, run: + ```bash reth node --full ``` -On differences between archive and full nodes, see [Pruning & Full Node](./pruning.md#basic-concepts) section. +On differences between archive and full nodes, see [Pruning & Full Node](/run/faq/pruning#basic-concepts) section. -> Note that these commands will not open any HTTP/WS ports by default. You can change this by adding the `--http`, `--ws` flags, respectively and using the `--http.api` and `--ws.api` flags to enable various [JSON-RPC APIs](../jsonrpc/intro.md). For more commands, see the [`reth node` CLI reference](../cli/reth/node.md). +:::note +These commands will not open any HTTP/WS ports by default. -The EL <> CL communication happens over the [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md), which is by default exposed at `http://localhost:8551`. The connection is authenticated over JWT using a JWT secret which is auto-generated by Reth and placed in a file called `jwt.hex` in the data directory, which on Linux by default is `$HOME/.local/share/reth/` (`/Users//Library/Application Support/reth/mainnet/jwt.hex` in Mac). +You can change this by adding the `--http`, `--ws` flags, respectively and using the `--http.api` and `--ws.api` flags to enable various [JSON-RPC APIs](/jsonrpc/intro). + +For more commands, see the [`reth node` CLI reference](/cli/cli). +::: + +The EL \<> CL communication happens over the [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common), which is by default exposed at `http://localhost:8551`. The connection is authenticated over JWT using a JWT secret which is auto-generated by Reth and placed in a file called `jwt.hex` in the data directory, which on Linux by default is `$HOME/.local/share/reth/` (`/Users//Library/Application Support/reth/mainnet/jwt.hex` in Mac). You can override this path using the `--authrpc.jwtsecret` option. You MUST use the same JWT secret in BOTH Reth and the chosen Consensus Layer. If you want to override the address or port, you can use the `--authrpc.addr` and `--authrpc.port` options, respectively. @@ -62,24 +73,24 @@ lighthouse bn \ If you don't intend on running validators on your node you can add: -``` bash +```bash --disable-deposit-contract-sync ``` -The `--checkpoint-sync-url` argument value can be replaced with any checkpoint sync endpoint from a [community maintained list](https://eth-clients.github.io/checkpoint-sync-endpoints/#mainnet). +The `--checkpoint-sync-url` argument value can be replaced with any checkpoint sync endpoint from a [community maintained list](https://eth-clients.github.io/checkpoint-sync-endpoints/#mainnet). Your Reth node should start receiving "fork choice updated" messages, and begin syncing the chain. ## Verify the chain is growing You can easily verify that by inspecting the logs, and seeing that headers are arriving in Reth. Sit back now and wait for the stages to run! -In the meantime, consider setting up [observability](./observability.md) to monitor your node's health or [test the JSON RPC API](../jsonrpc/intro.md). +In the meantime, consider setting up [observability](/run/monitoring) to monitor your node's health or [test the JSON RPC API](../jsonrpc/intro). - +{/* TODO: Add more logs to help node operators debug any weird CL to EL messages! */} -[installation]: ./../installation/installation.md +[installation]: ./../installation/installation [docs]: https://github.com/paradigmxyz/reth/tree/main/docs -[metrics]: https://github.com/paradigmxyz/reth/blob/main/docs/design/metrics.md#current-metrics +[metrics]: https://github.com/paradigmxyz/reth/blob/main/docs/design/metrics#current-metrics ## Running without a Consensus Layer @@ -90,7 +101,8 @@ We provide a method for running Reth without a Consensus Layer via the `--debug. You can use `--debug.etherscan` to run Reth with a fake consensus client that advances the chain using recent blocks on Etherscan. This requires an Etherscan API key (set via `ETHERSCAN_API_KEY` environment variable). Optionally, specify a custom API URL with `--debug.etherscan `. Example: + ```bash export ETHERSCAN_API_KEY=your_api_key_here reth node --debug.etherscan -``` \ No newline at end of file +``` diff --git a/book/vocs/docs/pages/run/ethereum/snapshots.mdx b/book/vocs/docs/pages/run/ethereum/snapshots.mdx new file mode 100644 index 0000000000..116d4359e5 --- /dev/null +++ b/book/vocs/docs/pages/run/ethereum/snapshots.mdx @@ -0,0 +1 @@ +# Snapshots \ No newline at end of file diff --git a/book/vocs/docs/pages/run/faq.mdx b/book/vocs/docs/pages/run/faq.mdx new file mode 100644 index 0000000000..bdd0a9f68e --- /dev/null +++ b/book/vocs/docs/pages/run/faq.mdx @@ -0,0 +1,11 @@ +# FAQ + +1. [Transaction Types](/run/faq/transactions) - Learn about the transaction types supported by Reth. + +2. [Pruning & Full Node](/run/faq/pruning) - Understand the differences between archive nodes, full nodes, and pruned nodes. Learn how to configure pruning options and what RPC methods are available for each node type. + +3. [Ports](/run/faq/ports) - Information about the network ports used by Reth for P2P communication, JSON-RPC APIs, and the Engine API for consensus layer communication. + +4. [Profiling](/run/faq/profiling) - Performance profiling techniques and tools for analyzing Reth node performance, including CPU profiling, memory analysis, and bottleneck identification. + +5. [Sync OP Mainnet](/run/faq/sync-op-mainnet) - Detailed guide for syncing a Reth node with OP Mainnet, including specific configuration requirements and considerations for the Optimism ecosystem. diff --git a/book/vocs/docs/pages/run/faq/ports.mdx b/book/vocs/docs/pages/run/faq/ports.mdx new file mode 100644 index 0000000000..f9a3ba9950 --- /dev/null +++ b/book/vocs/docs/pages/run/faq/ports.mdx @@ -0,0 +1,42 @@ +--- +description: Ports used by Reth. +--- + +# Ports + +This section provides essential information about the ports used by the system, their primary purposes, and recommendations for exposure settings. + +## Peering Ports + +- **Port:** `30303` +- **Protocol:** TCP and UDP +- **Purpose:** Peering with other nodes for synchronization of blockchain data. Nodes communicate through this port to maintain network consensus and share updated information. +- **Exposure Recommendation:** This port should be exposed to enable seamless interaction and synchronization with other nodes in the network. + +## Metrics Port + +- **Port:** `9001` +- **Protocol:** TCP +- **Purpose:** This port is designated for serving metrics related to the system's performance and operation. It allows internal monitoring and data collection for analysis. +- **Exposure Recommendation:** By default, this port should not be exposed to the public. It is intended for internal monitoring and analysis purposes. + +## HTTP RPC Port + +- **Port:** `8545` +- **Protocol:** TCP +- **Purpose:** Port 8545 provides an HTTP-based Remote Procedure Call (RPC) interface. It enables external applications to interact with the blockchain by sending requests over HTTP. +- **Exposure Recommendation:** Similar to the metrics port, exposing this port to the public is not recommended by default due to security considerations. + +## WS RPC Port + +- **Port:** `8546` +- **Protocol:** TCP +- **Purpose:** Port 8546 offers a WebSocket-based Remote Procedure Call (RPC) interface. It allows real-time communication between external applications and the blockchain. +- **Exposure Recommendation:** As with the HTTP RPC port, the WS RPC port should not be exposed by default for security reasons. + +## Engine API Port + +- **Port:** `8551` +- **Protocol:** TCP +- **Purpose:** Port 8551 facilitates communication between specific components, such as "reth" and "CL" (assuming their definitions are understood within the context of the system). It enables essential internal processes. +- **Exposure Recommendation:** This port is not meant to be exposed to the public by default. It should be reserved for internal communication between vital components of the system. diff --git a/book/developers/profiling.md b/book/vocs/docs/pages/run/faq/profiling.mdx similarity index 84% rename from book/developers/profiling.md rename to book/vocs/docs/pages/run/faq/profiling.mdx index fdae94e2d4..123808ad2d 100644 --- a/book/developers/profiling.md +++ b/book/vocs/docs/pages/run/faq/profiling.mdx @@ -1,11 +1,8 @@ -# Profiling reth +--- +description: Profiling and debugging memory usage in Reth. +--- -#### Table of Contents - - [Memory profiling](#memory-profiling) - - [Jemalloc](#jemalloc) - - [Monitoring memory usage](#monitoring-memory-usage) - - [Limiting process memory](#limiting-process-memory) - - [Understanding allocation with jeprof](#understanding-allocation-with-jeprof) +# Profiling Reth ## Memory profiling @@ -16,10 +13,11 @@ Reth is also a complex program, with many moving pieces, and it can be difficult Understanding how to profile memory usage is an extremely valuable skill when faced with this type of problem, and can quickly help shed light on the root cause of a memory leak. In this tutorial, we will be reviewing: - * How to monitor reth's memory usage, - * How to emulate a low-memory environment to lab-reproduce OOM crashes, - * How to enable `jemalloc` and its built-in memory profiling, and - * How to use `jeprof` to interpret heap profiles and identify potential root causes for a memory leak. + +- How to monitor reth's memory usage, +- How to emulate a low-memory environment to lab-reproduce OOM crashes, +- How to enable `jemalloc` and its built-in memory profiling, and +- How to use `jeprof` to interpret heap profiles and identify potential root causes for a memory leak. ### Jemalloc @@ -27,21 +25,24 @@ In this tutorial, we will be reviewing: We've seen significant performance benefits in reth when using jemalloc, but will be primarily focusing on its profiling capabilities. Jemalloc also provides tools for analyzing and visualizing its allocation profiles it generates, notably `jeprof`. - #### Enabling jemalloc in reth + Reth includes a `jemalloc` feature to explicitly use jemalloc instead of the system allocator: + ``` cargo build --features jemalloc ``` While the `jemalloc` feature does enable jemalloc, reth has an additional feature, `profiling`, that must be used to enable heap profiling. This feature implicitly enables the `jemalloc` feature as well: + ``` cargo build --features jemalloc-prof ``` When performing a longer-running or performance-sensitive task with reth, such as a sync test or load benchmark, it's usually recommended to use the `maxperf` profile. However, the `maxperf` profile does not enable debug symbols, which are required for tools like `perf` and `jemalloc` to produce results that a human can interpret. Reth includes a performance profile with debug symbols called `profiling`. To compile reth with debug symbols, jemalloc, profiling, and a performance profile: + ``` cargo build --features jemalloc-prof --profile profiling @@ -51,19 +52,39 @@ RUSTFLAGS="-C target-cpu=native" cargo build --features jemalloc-prof --profile ### Monitoring memory usage -Reth's dashboard has a few metrics that are important when monitoring memory usage. The **Jemalloc memory** graph shows reth's memory usage. The *allocated* label shows the memory used by the reth process which cannot be reclaimed unless reth frees that memory. This metric exceeding the available system memory would cause reth to be killed by the OOM killer. -Jemalloc memory +Reth's dashboard has a few metrics that are important when monitoring memory usage. The **Jemalloc memory** graph shows reth's memory usage. The _allocated_ label shows the memory used by the reth process which cannot be reclaimed unless reth frees that memory. This metric exceeding the available system memory would cause reth to be killed by the OOM killer. + +Jemalloc memory Some of reth's internal components also have metrics for the memory usage of certain data structures, usually data structures that are likely to contain many elements or may consume a lot of memory at peak load. **The bodies downloader buffer**: -The bodies downloader buffer graph + +The bodies downloader buffer graph **The blockchain tree block buffer**: -The blockchain tree block buffer graph + +The blockchain tree block buffer graph **The transaction pool subpools**: -The transaction pool subpool size graph + +The transaction pool subpool size graph One of these metrics growing beyond, 2GB for example, is likely a bug and could lead to an OOM on a low memory machine. It isn't likely for that to happen frequently, so in the best case these metrics can be used to rule out these components from having a leak, if an OOM is occurring. @@ -81,28 +102,37 @@ See the [canonical documentation for cgroups](https://git.kernel.org/pub/scm/lin In order to use cgroups to limit process memory, sometimes it must be explicitly enabled as a kernel parameter. For example, the following line is sometimes necessary to enable cgroup memory limits on Ubuntu machines that use GRUB: + ``` GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory" ``` + Then, create a named cgroup: + ``` sudo cgcreate -t $USER:$USER -a $USER:$USER -g memory:rethMemory ``` + The memory limit for the named cgroup can be set in `sys/fs/cgroup/memory`. This for example sets an 8 gigabyte memory limit: + ``` echo 8G > /sys/fs/cgroup/memory/rethMemory/memory.limit_in_bytes ``` + If the intention of setting up the cgroup is to strictly limit memory and simulate OOMs, a high amount of swap may prevent those OOMs from happening. To check swap, use `free -m`: + ``` ubuntu@bench-box:~/reth$ free -m total used free shared buff/cache available Mem: 257668 10695 218760 12 28213 244761 Swap: 8191 159 8032 ``` + If this is a problem, it may be worth either adjusting the system swappiness or disabling swap overall. Finally, `cgexec` can be used to run reth under the cgroup: + ``` cgexec -g memory:rethMemory reth node ``` @@ -111,11 +141,13 @@ cgexec -g memory:rethMemory reth node When reth is built with the `jemalloc-prof` feature and debug symbols, the profiling still needs to be configured and enabled at runtime. This is done with the `_RJEM_MALLOC_CONF` environment variable. Take the following command to launch reth with jemalloc profiling enabled: + ``` _RJEM_MALLOC_CONF=prof:true,lg_prof_interval:32,lg_prof_sample:19 reth node ``` If reth is not built properly, you will see this when you try to run reth: + ``` ~/p/reth (dan/managing-memory)> _RJEM_MALLOC_CONF=prof:true,lg_prof_interval:32,lg_prof_sample:19 reth node : Invalid conf pair: prof:true diff --git a/book/run/pruning.md b/book/vocs/docs/pages/run/faq/pruning.mdx similarity index 92% rename from book/run/pruning.md rename to book/vocs/docs/pages/run/faq/pruning.mdx index 25d11b4e46..2a800b7bae 100644 --- a/book/run/pruning.md +++ b/book/vocs/docs/pages/run/faq/pruning.mdx @@ -1,8 +1,14 @@ +--- +description: Pruning and full node options in Reth. +--- + # Pruning & Full Node -> Pruning and full node are new features of Reth, -> and we will be happy to hear about your experience using them either -> on [GitHub](https://github.com/paradigmxyz/reth/issues) or in the [Telegram group](https://t.me/paradigm_reth). +:::info +Pruning and full node are new features of Reth, +and we will be happy to hear about your experience using them either +on [GitHub](https://github.com/paradigmxyz/reth/issues) or in the [Telegram group](https://t.me/paradigm_reth). +::: By default, Reth runs as an archive node. Such nodes have all historical blocks and the state at each of these blocks available for querying and tracing. @@ -12,31 +18,31 @@ the steps for running Reth as a full node, what caveats to expect and how to con ## Basic concepts -- Archive node – Reth node that has all historical data from genesis. -- Pruned node – Reth node that has its historical data pruned partially or fully through - a [custom configuration](./config.md#the-prune-section). -- Full Node – Reth node that has the latest state and historical data for only the last 10064 blocks available - for querying in the same way as an archive node. +- Archive node – Reth node that has all historical data from genesis. +- Pruned node – Reth node that has its historical data pruned partially or fully through + a [custom configuration](/run/configuration#the-prune-section). +- Full Node – Reth node that has the latest state and historical data for only the last 10064 blocks available + for querying in the same way as an archive node. -The node type that was chosen when first [running a node](./run-a-node.md) **cannot** be changed after +The node type that was chosen when first [running a node](/run/overview) **cannot** be changed after the initial sync. Turning Archive into Pruned, or Pruned into Full is not supported. ## Modes ### Archive Node -Default mode, follow the steps from the previous chapter on [how to run on mainnet or official testnets](./mainnet.md). +Default mode, follow the steps from the previous chapter on [how to run on mainnet or official testnets](/run/ethereum). ### Pruned Node -To run Reth as a pruned node configured through a [custom configuration](./config.md#the-prune-section), +To run Reth as a pruned node configured through a [custom configuration](/run/configuration#the-prune-section), modify the `reth.toml` file and run Reth in the same way as archive node by following the steps from -the previous chapter on [how to run on mainnet or official testnets](./mainnet.md). +the previous chapter on [how to run on mainnet or official testnets](/run/ethereum). ### Full Node To run Reth as a full node, follow the steps from the previous chapter on -[how to run on mainnet or official testnets](./mainnet.md), and add a `--full` flag. For example: +[how to run on mainnet or official testnets](/run/ethereum), and add a `--full` flag. For example: ```bash reth node \ @@ -95,21 +101,21 @@ storage_history = { distance = 10_064 } Meaning, it prunes: -- Account History and Storage History up to the last 10064 blocks -- All of Sender Recovery data. The caveat is that it's pruned gradually after the initial sync - is completed, so the disk space is reclaimed slowly. -- Receipts up to the last 10064 blocks, preserving all receipts with the logs from Beacon Deposit Contract +- Account History and Storage History up to the last 10064 blocks +- All of Sender Recovery data. The caveat is that it's pruned gradually after the initial sync + is completed, so the disk space is reclaimed slowly. +- Receipts up to the last 10064 blocks, preserving all receipts with the logs from Beacon Deposit Contract ## RPC support -As it was mentioned in the [pruning configuration chapter](./config.md#the-prune-section), there are several segments which can be pruned +As it was mentioned in the [pruning configuration chapter](/run/configuration#the-prune-section), there are several segments which can be pruned independently of each other: -- Sender Recovery -- Transaction Lookup -- Receipts -- Account History -- Storage History +- Sender Recovery +- Transaction Lookup +- Receipts +- Account History +- Storage History Pruning of each of these segments disables different RPC methods, because the historical data or lookup indexes become unavailable. @@ -215,8 +221,8 @@ The following tables describe RPC methods available in the full node. The following tables describe the requirements for prune segments, per RPC method: -- ✅ – if the segment is pruned, the RPC method still works -- ❌ - if the segment is pruned, the RPC method doesn't work anymore +- ✅ – if the segment is pruned, the RPC method still works +- ❌ - if the segment is pruned, the RPC method doesn't work anymore #### `debug` namespace diff --git a/book/run/sync-op-mainnet.md b/book/vocs/docs/pages/run/faq/sync-op-mainnet.mdx similarity index 70% rename from book/run/sync-op-mainnet.md rename to book/vocs/docs/pages/run/faq/sync-op-mainnet.mdx index 0e2090acbc..e895331288 100644 --- a/book/run/sync-op-mainnet.md +++ b/book/vocs/docs/pages/run/faq/sync-op-mainnet.mdx @@ -1,13 +1,17 @@ +--- +description: Syncing Reth with OP Mainnet and Bedrock state. +--- + # Sync OP Mainnet To sync OP mainnet, Bedrock state needs to be imported as a starting point. There are currently two ways: -* Minimal bootstrap **(recommended)**: only state snapshot at Bedrock block is imported without any OVM historical data. -* Full bootstrap **(not recommended)**: state, blocks and receipts are imported. *Not recommended for now: [storage consistency issue](https://github.com/paradigmxyz/reth/pull/11099) tldr: sudden crash may break the node +- Minimal bootstrap **(recommended)**: only state snapshot at Bedrock block is imported without any OVM historical data. +- Full bootstrap **(not recommended)**: state, blocks and receipts are imported. \*Not recommended for now: [storage consistency issue](https://github.com/paradigmxyz/reth/pull/11099) tldr: sudden crash may break the node ## Minimal bootstrap (recommended) -**The state snapshot at Bedrock block is required.** It can be exported from [op-geth](https://github.com/testinprod-io/op-erigon/blob/pcw109550/bedrock-db-migration/bedrock-migration.md#export-state) (**.jsonl**) or downloaded directly from [here](https://mega.nz/file/GdZ1xbAT#a9cBv3AqzsTGXYgX7nZc_3fl--tcBmOAIwIA5ND6kwc). +**The state snapshot at Bedrock block is required.** It can be exported from [op-geth](https://github.com/testinprod-io/op-erigon/blob/pcw109550/bedrock-db-migration/bedrock-migration#export-state) (**.jsonl**) or downloaded directly from [here](https://mega.nz/file/GdZ1xbAT#a9cBv3AqzsTGXYgX7nZc_3fl--tcBmOAIwIA5ND6kwc). Import the state snapshot @@ -21,12 +25,11 @@ Sync the node to a recent finalized block (e.g. 125200000) to catch up close to $ op-reth node --chain optimism --datadir op-mainnet --debug.tip 0x098f87b75c8b861c775984f9d5dbe7b70cbbbc30fc15adb03a5044de0144f2d0 # block #125200000 ``` - ## Full bootstrap (not recommended) **Not recommended for now**: [storage consistency issue](https://github.com/paradigmxyz/reth/pull/11099) tldr: sudden crash may break the node. -### Import state +### Import state To sync OP mainnet, the Bedrock datadir needs to be imported to use as starting point. Blocks lower than the OP mainnet Bedrock fork, are built on the OVM and cannot be executed on the EVM. @@ -35,15 +38,15 @@ execution in reth's sync pipeline. Importing OP mainnet Bedrock datadir requires exported data: -- Blocks [and receipts] below Bedrock -- State snapshot at first Bedrock block +- Blocks [and receipts] below Bedrock +- State snapshot at first Bedrock block ### Manual Export Steps -The `op-geth` Bedrock datadir can be downloaded from . +The `op-geth` Bedrock datadir can be downloaded from [https://datadirs.optimism.io](https://datadirs.optimism.io). To export the OVM chain from `op-geth`, clone the `testinprod-io/op-geth` repo and checkout -. Commands to export blocks, receipts and state dump can be +[testinprod-io/op-geth#1](https://github.com/testinprod-io/op-geth/pull/1). Commands to export blocks, receipts and state dump can be found in `op-geth/migrate.sh`. ### Manual Import Steps @@ -64,7 +67,7 @@ This step is optional. To run a full node, skip this step. If however receipts a corresponding transactions must already be imported (see [step 1](#1-import-blocks)). Imports a `.rlp` file of receipts, that has been exported with command specified in - (command for exporting receipts uses custom RLP-encoding). +[testinprod-io/op-geth#1](https://github.com/testinprod-io/op-geth/pull/1) (command for exporting receipts uses custom RLP-encoding). Import of >100 million OVM receipts, from genesis to Bedrock, completes in 30 minutes. @@ -86,7 +89,7 @@ $ op-reth init-state --chain optimism ## Sync from Bedrock to tip Running the node with `--debug.tip `syncs the node without help from CL until a fixed tip. The -block hash can be taken from the latest block on . +block hash can be taken from the latest block on [https://optimistic.etherscan.io](https://optimistic.etherscan.io). Use `op-node` to track the tip. Start `op-node` with `--syncmode=execution-layer` and `--l2.enginekind=reth`. If `op-node`'s RPC connection to L1 is over localhost, `--l1.trustrpc` can be set to improve performance. diff --git a/book/run/transactions.md b/book/vocs/docs/pages/run/faq/transactions.mdx similarity index 97% rename from book/run/transactions.md rename to book/vocs/docs/pages/run/faq/transactions.mdx index edb3a24d76..a4d19df38d 100644 --- a/book/run/transactions.md +++ b/book/vocs/docs/pages/run/faq/transactions.mdx @@ -1,3 +1,7 @@ +--- +description: Overview of Ethereum transaction types in Reth. +--- + # Transaction types Over time, the Ethereum network has undergone various upgrades and improvements to enhance transaction efficiency, security, and user experience. Four significant transaction types that have evolved are: diff --git a/book/run/troubleshooting.md b/book/vocs/docs/pages/run/faq/troubleshooting.mdx similarity index 52% rename from book/run/troubleshooting.md rename to book/vocs/docs/pages/run/faq/troubleshooting.mdx index 7b8ec6ba19..3dafa678ac 100644 --- a/book/run/troubleshooting.md +++ b/book/vocs/docs/pages/run/faq/troubleshooting.mdx @@ -1,102 +1,107 @@ +--- +description: Troubleshooting common Reth node and database issues. +--- + # Troubleshooting This page tries to answer how to deal with the most popular issues. -- [Troubleshooting](#troubleshooting) - - [Database](#database) - - [Docker](#docker) - - [Error code 13](#error-code-13) - - [Slow database inserts and updates](#slow-database-inserts-and-updates) - - [Compact the database](#compact-the-database) - - [Re-sync from scratch](#re-sync-from-scratch) - - [Database write error](#database-write-error) - - [Concurrent database access error (using containers/Docker)](#concurrent-database-access-error-using-containersdocker) - - [Hardware Performance Testing](#hardware-performance-testing) - - [Disk Speed Testing with IOzone](#disk-speed-testing-with-iozone) - +- [Troubleshooting](#troubleshooting) + - [Database](#database) + - [Docker](#docker) + - [Error code 13](#error-code-13) + - [Slow database inserts and updates](#slow-database-inserts-and-updates) + - [Compact the database](#compact-the-database) + - [Re-sync from scratch](#re-sync-from-scratch) + - [Database write error](#database-write-error) + - [Concurrent database access error (using containers/Docker)](#concurrent-database-access-error-using-containersdocker) + - [Hardware Performance Testing](#hardware-performance-testing) + - [Disk Speed Testing with IOzone](#disk-speed-testing-with-iozone) ## Database -### Docker +### Docker Externally accessing a `datadir` inside a named docker volume will usually come with folder/file ownership/permissions issues. **It is not recommended** to use the path to the named volume as it will trigger an error code 13. `RETH_DB_PATH: /var/lib/docker/volumes/named_volume/_data/eth/db cargo r --examples db-access --path ` is **DISCOURAGED** and a mounted volume with the right permissions should be used instead. -### Error code 13 +### Error code 13 `the environment opened in read-only code: 13` Externally accessing a database in a read-only folder is not supported, **UNLESS** there's no `mdbx.lck` present, and it's called with `exclusive` on calling `open_db_read_only`. Meaning that there's no node syncing concurrently. -If the error persists, ensure that you have the right `rx` permissions on the `datadir` **and its parent** folders. Eg. the following command should succeed: +If the error persists, ensure that you have the right `rx` permissions on the `datadir` **and its parent** folders. Eg. the following command should succeed: ```bash,ignore stat /full/path/datadir ``` - ### Slow database inserts and updates If you're: + 1. Running behind the tip -2. Have slow canonical commit time according to the `Canonical Commit Latency Time` chart on [Grafana dashboard](./observability.md#prometheus--grafana) (more than 2-3 seconds) -3. Seeing warnings in your logs such as - ```console - 2023-11-08T15:17:24.789731Z WARN providers::db: Transaction insertion took too long block_number=18528075 tx_num=2150227643 hash=0xb7de1d6620efbdd3aa8547c47a0ff09a7fd3e48ba3fd2c53ce94c6683ed66e7c elapsed=6.793759034s - ``` +2. Have slow canonical commit time according to the `Canonical Commit Latency Time` chart on [Grafana dashboard](/run/monitoring#prometheus--grafana) (more than 2-3 seconds) +3. Seeing warnings in your logs such as + ```console + 2023-11-08T15:17:24.789731Z WARN providers::db: Transaction insertion took too long block_number=18528075 tx_num=2150227643 hash=0xb7de1d6620efbdd3aa8547c47a0ff09a7fd3e48ba3fd2c53ce94c6683ed66e7c elapsed=6.793759034s + ``` then most likely you're experiencing issues with the [database freelist](https://github.com/paradigmxyz/reth/issues/5228). -To confirm it, check if the values on the `Freelist` chart on [Grafana dashboard](./observability.md#prometheus--grafana) +To confirm it, check if the values on the `Freelist` chart on [Grafana dashboard](/run/monitoring#prometheus--grafana) is greater than 10M. Currently, there are two main ways to fix this issue. - #### Compact the database + It will take around 5-6 hours and require **additional** disk space located on the same or different drive -equal to the [freshly synced node](../installation/installation.md#hardware-requirements). +equal to the [freshly synced node](/installation/overview#hardware-requirements). 1. Clone Reth - ```bash - git clone https://github.com/paradigmxyz/reth - cd reth - ``` + ```bash + git clone https://github.com/paradigmxyz/reth + cd reth + ``` 2. Build database debug tools - ```bash - make db-tools - ``` + ```bash + make db-tools + ``` 3. Run compaction (this step will take 5-6 hours, depending on the I/O speed) - ```bash - ./db-tools/mdbx_copy -c $(reth db path) reth_compact.dat - ``` + ```bash + ./db-tools/mdbx_copy -c $(reth db path) reth_compact.dat + ``` 4. Stop Reth 5. Backup original database - ```bash - mv $(reth db path)/mdbx.dat reth_old.dat - ``` + ```bash + mv $(reth db path)/mdbx.dat reth_old.dat + ``` 6. Move compacted database in place of the original database - ```bash - mv reth_compact.dat $(reth db path)/mdbx.dat - ``` + ```bash + mv reth_compact.dat $(reth db path)/mdbx.dat + ``` 7. Start Reth 8. Confirm that the values on the `Freelist` chart are near zero and the values on the `Canonical Commit Latency Time` chart -is less than 1 second. + is less than 1 second. 9. Delete original database - ```bash - rm reth_old.dat - ``` + ```bash + rm reth_old.dat + ``` #### Re-sync from scratch + It will take the same time as initial sync. 1. Stop Reth -2. Drop the database using [`reth db drop`](../cli/reth/db/drop.md) +2. Drop the database using [`reth db drop`](#TODO) 3. Start reth ### Database write error If you encounter an irrecoverable database-related errors, in most of the cases it's related to the RAM/NVMe/SSD you use. For example: + ```console Error: A stage encountered an irrecoverable error. @@ -132,6 +137,7 @@ If you encounter an error while accessing the database from multiple processes a ```console mdbx:0: panic: Assertion `osal_rdt_unlock() failed: err 1' failed. ``` + or ```console @@ -151,61 +157,71 @@ If your hardware performance is significantly lower than these reference numbers ### Disk Speed Testing with [IOzone](https://linux.die.net/man/1/iozone) 1. Test disk speed: - ```bash - iozone -e -t1 -i0 -i2 -r1k -s1g /tmp - ``` - Reference numbers (on Latitude c3.large.x86): - ```console - Children see throughput for 1 initial writers = 907733.81 kB/sec - Parent sees throughput for 1 initial writers = 907239.68 kB/sec - Children see throughput for 1 rewriters = 1765222.62 kB/sec - Parent sees throughput for 1 rewriters = 1763433.35 kB/sec - Children see throughput for 1 random readers = 1557497.38 kB/sec - Parent sees throughput for 1 random readers = 1554846.58 kB/sec - Children see throughput for 1 random writers = 984428.69 kB/sec - Parent sees throughput for 1 random writers = 983476.67 kB/sec - ``` + ```bash + iozone -e -t1 -i0 -i2 -r1k -s1g /tmp + ``` + + Reference numbers (on Latitude c3.large.x86): + + ```console + Children see throughput for 1 initial writers = 907733.81 kB/sec + Parent sees throughput for 1 initial writers = 907239.68 kB/sec + Children see throughput for 1 rewriters = 1765222.62 kB/sec + Parent sees throughput for 1 rewriters = 1763433.35 kB/sec + Children see throughput for 1 random readers = 1557497.38 kB/sec + Parent sees throughput for 1 random readers = 1554846.58 kB/sec + Children see throughput for 1 random writers = 984428.69 kB/sec + Parent sees throughput for 1 random writers = 983476.67 kB/sec + ``` + 2. Test disk speed with memory-mapped files: - ```bash - iozone -B -G -e -t1 -i0 -i2 -r1k -s1g /tmp - ``` - Reference numbers (on Latitude c3.large.x86): - ```console - Children see throughput for 1 initial writers = 56471.06 kB/sec - Parent sees throughput for 1 initial writers = 56365.14 kB/sec - Children see throughput for 1 rewriters = 241650.69 kB/sec - Parent sees throughput for 1 rewriters = 239067.96 kB/sec - Children see throughput for 1 random readers = 6833161.00 kB/sec - Parent sees throughput for 1 random readers = 5597659.65 kB/sec - Children see throughput for 1 random writers = 220248.53 kB/sec - Parent sees throughput for 1 random writers = 219112.26 kB/sec + ```bash + iozone -B -G -e -t1 -i0 -i2 -r1k -s1g /tmp + ``` + + Reference numbers (on Latitude c3.large.x86): + + ```console + Children see throughput for 1 initial writers = 56471.06 kB/sec + Parent sees throughput for 1 initial writers = 56365.14 kB/sec + Children see throughput for 1 rewriters = 241650.69 kB/sec + Parent sees throughput for 1 rewriters = 239067.96 kB/sec + Children see throughput for 1 random readers = 6833161.00 kB/sec + Parent sees throughput for 1 random readers = 5597659.65 kB/sec + Children see throughput for 1 random writers = 220248.53 kB/sec + Parent sees throughput for 1 random writers = 219112.26 kB/sec ``` ### RAM Speed and Health Testing 1. Check RAM speed with [lshw](https://linux.die.net/man/1/lshw): - ```bash - sudo lshw -short -C memory - ``` - Look for the frequency in the output. Reference output: - ```console - H/W path Device Class Description - ================================================================ - /0/24/0 memory 64GiB DIMM DDR4 Synchronous Registered (Buffered) 3200 MHz (0.3 ns) - /0/24/1 memory 64GiB DIMM DDR4 Synchronous Registered (Buffered) 3200 MHz (0.3 ns) - ... - ``` + ```bash + sudo lshw -short -C memory + ``` + + Look for the frequency in the output. Reference output: + + ```console + H/W path Device Class Description + ================================================================ + /0/24/0 memory 64GiB DIMM DDR4 Synchronous Registered (Buffered) 3200 MHz (0.3 ns) + /0/24/1 memory 64GiB DIMM DDR4 Synchronous Registered (Buffered) 3200 MHz (0.3 ns) + ... + ``` 2. Test RAM health with [memtester](https://linux.die.net/man/8/memtester): - ```bash - sudo memtester 10G - ``` - This will take a while. You can test with a smaller amount first: - ```bash - sudo memtester 1G 1 - ``` - All checks should report "ok". + ```bash + sudo memtester 10G + ``` + + This will take a while. You can test with a smaller amount first: + + ```bash + sudo memtester 1G 1 + ``` + + All checks should report "ok". diff --git a/book/run/observability.md b/book/vocs/docs/pages/run/monitoring.mdx similarity index 92% rename from book/run/observability.md rename to book/vocs/docs/pages/run/monitoring.mdx index aa4e9387a0..d09b795dc4 100644 --- a/book/run/observability.md +++ b/book/vocs/docs/pages/run/monitoring.mdx @@ -1,3 +1,7 @@ +--- +description: Reth observability and metrics with Prometheus and Grafana. +--- + # Observability with Prometheus & Grafana Reth exposes a number of metrics which can be enabled by adding the `--metrics` flag: @@ -41,6 +45,7 @@ brew install grafana ### Linux #### Debian/Ubuntu + ```bash # Install Prometheus # Visit https://prometheus.io/download/ for the latest version @@ -58,6 +63,7 @@ sudo apt-get install grafana ``` #### Fedora/RHEL/CentOS + ```bash # Install Prometheus # Visit https://prometheus.io/download/ for the latest version @@ -74,16 +80,18 @@ sudo dnf install -y https://dl.grafana.com/oss/release/grafana-latest-1.x86_64.r ### Windows #### Using Chocolatey + ```powershell choco install prometheus choco install grafana ``` #### Manual installation + 1. Download the latest Prometheus from [prometheus.io/download](https://prometheus.io/download/) - - Select the Windows binary (.zip) for your architecture (typically windows-amd64) + - Select the Windows binary (.zip) for your architecture (typically windows-amd64) 2. Download the latest Grafana from [grafana.com/grafana/download](https://grafana.com/grafana/download) - - Choose the Windows installer (.msi) or standalone version + - Choose the Windows installer (.msi) or standalone version 3. Extract Prometheus to a location of your choice (e.g., `C:\prometheus`) 4. Install Grafana by running the installer or extracting the standalone version 5. Configure Prometheus and Grafana to run as services if needed @@ -95,7 +103,7 @@ Then, kick off the Prometheus and Grafana services: brew services start prometheus brew services start grafana -# For Linux (systemd-based distributions) +# For Linux (syst-based distributions) sudo systemctl start prometheus sudo systemctl start grafana-server @@ -110,9 +118,9 @@ You can find an example config for the Prometheus service in the repo here: [`et Depending on your installation you may find the config for your Prometheus service at: -- OSX: `/opt/homebrew/etc/prometheus.yml` -- Linuxbrew: `/home/linuxbrew/.linuxbrew/etc/prometheus.yml` -- Others: `/usr/local/etc/prometheus/prometheus.yml` +- OSX: `/opt/homebrew/etc/prometheus.yml` +- Linuxbrew: `/home/linuxbrew/.linuxbrew/etc/prometheus.yml` +- Others: `/usr/local/etc/prometheus/prometheus.yml` Next, open up "localhost:3000" in your browser, which is the default URL for Grafana. Here, "admin" is the default for both the username and password. @@ -130,7 +138,7 @@ In this runbook, we took you through starting the node, exposing different log l This will all be very useful to you, whether you're simply running a home node and want to keep an eye on its performance, or if you're a contributor and want to see the effect that your (or others') changes have on Reth's operations. -[installation]: ../installation/installation.md +[installation]: ../installation/installation [release-profile]: https://doc.rust-lang.org/cargo/reference/profiles.html#release [docs]: https://github.com/paradigmxyz/reth/tree/main/docs -[metrics]: https://github.com/paradigmxyz/reth/blob/main/docs/design/metrics.md#current-metrics +[metrics]: https://github.com/paradigmxyz/reth/blob/main/docs/design/metrics#current-metrics diff --git a/book/vocs/docs/pages/run/networks.mdx b/book/vocs/docs/pages/run/networks.mdx new file mode 100644 index 0000000000..1bb6593b2e --- /dev/null +++ b/book/vocs/docs/pages/run/networks.mdx @@ -0,0 +1 @@ +# Networks diff --git a/book/run/optimism.md b/book/vocs/docs/pages/run/opstack.mdx similarity index 95% rename from book/run/optimism.md rename to book/vocs/docs/pages/run/opstack.mdx index a3f747dd1f..86e9ad7243 100644 --- a/book/run/optimism.md +++ b/book/vocs/docs/pages/run/opstack.mdx @@ -1,7 +1,12 @@ +--- +description: Running Reth on Optimism and OP Stack chains. +--- + # Running Reth on OP Stack chains `reth` ships with the `optimism` feature flag in several crates, including the binary, enabling support for OP Stack chains out of the box. Optimism has a small diff from the [L1 EELS][l1-el-spec], comprising of the following key changes: + 1. A new transaction type, [`0x7E (Deposit)`][deposit-spec], which is used to deposit funds from L1 to L2. 1. Modifications to the `PayloadAttributes` that allow the [sequencer][sequencer] to submit transactions to the EL through the Engine API. Payloads will be built with deposit transactions at the top of the block, with the first deposit transaction always being the "L1 Info Transaction." @@ -19,6 +24,7 @@ Since 1.4.0 op-reth has built in support for all chains in the [superchain regis ## Running on Optimism You will need three things to run `op-reth`: + 1. An archival L1 node, synced to the settlement layer of the OP Stack chain you want to sync (e.g. `reth`, `geth`, `besu`, `nethermind`, etc.) 1. A rollup node (e.g. `op-node`, `magi`, `hildr`, etc.) 1. An instance of `op-reth`. @@ -40,6 +46,7 @@ This will install the `op-reth` binary to `~/.cargo/bin/op-reth`. ### Installing a Rollup Node Next, you'll need to install a [Rollup Node][rollup-node-spec], which is the equivalent to the Consensus Client on the OP Stack. Available options include: + 1. [`op-node`][op-node] 1. [`magi`][magi] 1. [`hildr`][hildr] @@ -49,11 +56,13 @@ For the sake of this tutorial, we'll use the reference implementation of the Rol ### Running `op-reth` op-reth supports additional OP Stack specific CLI arguments: + 1. `--rollup.sequencer-http ` - The sequencer endpoint to connect to. Transactions sent to the `op-reth` EL are also forwarded to this sequencer endpoint for inclusion, as the sequencer is the entity that builds blocks on OP Stack chains. 1. `--rollup.disable-tx-pool-gossip` - Disables gossiping of transactions in the mempool to peers. This can be omitted for personal nodes, though providers should always opt to enable this flag. 1. `--rollup.discovery.v4` - Enables the discovery v4 protocol for peer discovery. By default, op-reth, similar to op-geth, has discovery v5 enabled and discovery v4 disabled, whereas regular reth has discovery v4 enabled and discovery v5 disabled. First, ensure that your L1 archival node is running and synced to tip. Also make sure that the beacon node / consensus layer client is running and has http APIs enabled. Then, start `op-reth` with the `--rollup.sequencer-http` flag set to the `Base Mainnet` sequencer endpoint: + ```sh op-reth node \ --chain base \ @@ -65,6 +74,7 @@ op-reth node \ ``` Then, once `op-reth` has been started, start up the `op-node`: + ```sh op-node \ --network="base-mainnet" \ @@ -81,17 +91,15 @@ op-node \ Consider adding the `--l1.trustrpc` flag to improve performance, if the connection to l1 is over localhost. [l1-el-spec]: https://github.com/ethereum/execution-specs -[rollup-node-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/rollup-node.md +[rollup-node-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/rollup-node [op-geth-forkdiff]: https://op-geth.optimism.io -[sequencer]: https://github.com/ethereum-optimism/specs/blob/main/specs/background.md#sequencers +[sequencer]: https://github.com/ethereum-optimism/specs/blob/main/specs/background#sequencers [op-stack-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs -[l2-el-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/exec-engine.md -[deposit-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/deposits.md -[derivation-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/derivation.md +[l2-el-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/exec-engine +[deposit-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/deposits +[derivation-spec]: https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/derivation [superchain-registry]: https://github.com/ethereum-optimism/superchain-registry - [op-node-docker]: https://console.cloud.google.com/artifacts/docker/oplabs-tools-artifacts/us/images/op-node - [reth]: https://github.com/paradigmxyz/reth [op-node]: https://github.com/ethereum-optimism/optimism/tree/develop/op-node [magi]: https://github.com/a16z/magi diff --git a/book/vocs/docs/pages/run/opstack/op-mainnet-caveats.mdx b/book/vocs/docs/pages/run/opstack/op-mainnet-caveats.mdx new file mode 100644 index 0000000000..94f1024dfc --- /dev/null +++ b/book/vocs/docs/pages/run/opstack/op-mainnet-caveats.mdx @@ -0,0 +1 @@ +# Caveats OP-Mainnet \ No newline at end of file diff --git a/book/vocs/docs/pages/run/overview.mdx b/book/vocs/docs/pages/run/overview.mdx new file mode 100644 index 0000000000..06b595ad48 --- /dev/null +++ b/book/vocs/docs/pages/run/overview.mdx @@ -0,0 +1,47 @@ +--- +description: Guide to running a Reth node. +--- + +# Run a Node + +Congratulations, now that you have installed Reth, it's time to run it! + +In this section, we'll guide you through running a Reth node on various networks and configurations. + +## Networks + +Choose the network you want to run your node on: + +- **[Ethereum](/run/ethereum)** - Run a node on Ethereum mainnet or testnets +- **[OP-stack](/run/opstack)** - Run a node on OP Stack chains like Base, Optimism, and others +- **[Private testnets](/run/private-testnets)** - Set up and run private test networks + +## Configuration & Monitoring + +Learn how to configure and monitor your node: + +- **[Configuration](/run/configuration)** - Configure your node using reth.toml +- **[Monitoring](/run/monitoring)** - Set up logs, metrics, and observability + +## Frequently Asked Questions + +Find answers to common questions and troubleshooting tips: + +- **[Transaction Types](/run/faq/transactions)** - Understanding different transaction types +- **[Pruning & Full Node](/run/faq/pruning)** - Storage management and node types +- **[Ports](/run/faq/ports)** - Network port configuration +- **[Profiling](/run/faq/profiling)** - Performance profiling and optimization +- **[Sync OP Mainnet](/run/faq/sync-op-mainnet)** - Tips for syncing OP Mainnet + +## List of Supported Networks + +| Network | Chain ID | RPC URL | +| --------------- | -------- | ------------------------------------ | +| Ethereum | 1 | https://reth-ethereum.ithaca.xyz/rpc | +| Sepolia Testnet | 11155111 | https://sepolia.drpc.org | +| Base | 8453 | https://base-mainnet.rpc.ithaca.xyz | +| Base Sepolia | 84532 | https://base-sepolia.rpc.ithaca.xyz | + +:::tip +Want to add more networks to this table? Feel free to [contribute](https://github.com/paradigmxyz/reth/edit/main/book/vocs/docs/pages/run/overview.mdx) by submitting a PR with additional networks that Reth supports! +::: diff --git a/book/run/private-testnet.md b/book/vocs/docs/pages/run/private-testnets.mdx similarity index 90% rename from book/run/private-testnet.md rename to book/vocs/docs/pages/run/private-testnets.mdx index 28253ca9f0..af281fc512 100644 --- a/book/run/private-testnet.md +++ b/book/vocs/docs/pages/run/private-testnets.mdx @@ -1,10 +1,17 @@ +--- +description: Running Reth in a private testnet using Kurtosis. +--- + # Run Reth in a private testnet using Kurtosis + For those who need a private testnet to validate functionality or scale with Reth. ## Using Docker locally + This guide uses [Kurtosis' ethereum-package](https://github.com/ethpandaops/ethereum-package) and assumes you have Kurtosis and Docker installed and have Docker already running on your machine. -* Go [here](https://docs.kurtosis.com/install/) to install Kurtosis -* Go [here](https://docs.docker.com/get-docker/) to install Docker + +- Go [here](https://docs.kurtosis.com/install/) to install Kurtosis +- Go [here](https://docs.docker.com/get-docker/) to install Docker The [`ethereum-package`](https://github.com/ethpandaops/ethereum-package) is a [package](https://docs.kurtosis.com/advanced-concepts/packages) for a general purpose Ethereum testnet definition used for instantiating private testnets at any scale over Docker or Kubernetes, locally or in the cloud. This guide will go through how to spin up a local private testnet with Reth and various CL clients locally. Specifically, you will instantiate a 2-node network over Docker with Reth/Lighthouse and Reth/Teku client combinations. @@ -13,17 +20,19 @@ To see all possible configurations and flags you can use, including metrics and Genesis data will be generated using this [genesis-generator](https://github.com/ethpandaops/ethereum-genesis-generator) to be used to bootstrap the EL and CL clients for each node. The end result will be a private testnet with nodes deployed as Docker containers in an ephemeral, isolated environment on your machine called an [enclave](https://docs.kurtosis.com/advanced-concepts/enclaves/). Read more about how the `ethereum-package` works by going [here](https://github.com/ethpandaops/ethereum-package/). ### Step 1: Define the parameters and shape of your private network + First, in your home directory, create a file with the name `network_params.yaml` with the following contents: + ```yaml participants: - - el_type: reth - el_image: ghcr.io/paradigmxyz/reth - cl_type: lighthouse - cl_image: sigp/lighthouse:latest - - el_type: reth - el_image: ghcr.io/paradigmxyz/reth - cl_type: teku - cl_image: consensys/teku:latest + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth + cl_type: lighthouse + cl_image: sigp/lighthouse:latest + - el_type: reth + el_image: ghcr.io/paradigmxyz/reth + cl_type: teku + cl_image: consensys/teku:latest ``` > [!TIP] @@ -32,10 +41,13 @@ participants: ### Step 2: Spin up your network Next, run the following command from your command line: + ```bash kurtosis run github.com/ethpandaops/ethereum-package --args-file ~/network_params.yaml --image-download always ``` + Kurtosis will spin up an [enclave](https://docs.kurtosis.com/advanced-concepts/enclaves/) (i.e an ephemeral, isolated environment) and begin to configure and instantiate the nodes in your network. In the end, Kurtosis will print the services running in your enclave that form your private testnet alongside all the container ports and files that were generated & used to start up the private testnet. Here is a sample output: + ```console INFO[2024-07-09T12:01:35+02:00] ======================================================== INFO[2024-07-09T12:01:35+02:00] || Created enclave: silent-mountain || @@ -88,14 +100,18 @@ f0a7d5343346 vc-1-reth-lighthouse metrics: 8080/tc Great! You now have a private network with 2 full Ethereum nodes on your local machine over Docker - one that is a Reth/Lighthouse pair and another that is Reth/Teku. Check out the [Kurtosis docs](https://docs.kurtosis.com/cli) to learn about the various ways you can interact with and inspect your network. ## Using Kurtosis on Kubernetes + Kurtosis packages are portable and reproducible, meaning they will work the same way over Docker or Kubernetes, locally or on remote infrastructure. For use cases that require a larger scale, Kurtosis can be deployed on Kubernetes by following these docs [here](https://docs.kurtosis.com/k8s/). ## Running the network with additional services + The [`ethereum-package`](https://github.com/ethpandaops/ethereum-package) comes with many optional flags and arguments you can enable for your private network. Some include: -- A Grafana + Prometheus instance -- A transaction spammer called [`tx-fuzz`](https://github.com/MariusVanDerWijden/tx-fuzz) -- [A network metrics collector](https://github.com/dapplion/beacon-metrics-gazer) -- Flashbot's `mev-boost` implementation of PBS (to test/simulate MEV workflows) + +- A Grafana + Prometheus instance +- A transaction spammer called [`tx-fuzz`](https://github.com/MariusVanDerWijden/tx-fuzz) +- [A network metrics collector](https://github.com/dapplion/beacon-metrics-gazer) +- Flashbot's `mev-boost` implementation of PBS (to test/simulate MEV workflows) ### Questions? + Please reach out to the [Kurtosis discord](https://discord.com/invite/6Jjp9c89z9) should you have any questions about how to use the `ethereum-package` for your private testnet needs. Thanks! diff --git a/book/installation/installation.md b/book/vocs/docs/pages/run/system-requirements.mdx similarity index 68% rename from book/installation/installation.md rename to book/vocs/docs/pages/run/system-requirements.mdx index 602601b9f3..5db81bc29b 100644 --- a/book/installation/installation.md +++ b/book/vocs/docs/pages/run/system-requirements.mdx @@ -1,31 +1,38 @@ -# Installation - -Reth runs on Linux and macOS (Windows tracked). - -There are three core methods to obtain Reth: - -* [Pre-built binaries](./binaries.md) -* [Docker images](./docker.md) -* [Building from source.](./source.md) - -> **Note** -> -> If you have Docker installed, we recommend using the [Docker Compose](./docker.md#using-docker-compose) configuration -> that will get you Reth, Lighthouse (Consensus Client), Prometheus and Grafana running and syncing with just one command. - -## Hardware Requirements +# System Requirements The hardware requirements for running Reth depend on the node configuration and can change over time as the network grows or new features are implemented. The most important requirement is by far the disk, whereas CPU and RAM requirements are relatively flexible. +## Ethereum Mainnet Requirements + +Below are the requirements for Ethereum Mainnet: + | | Archive Node | Full Node | -|-----------|---------------------------------------|---------------------------------------| +| --------- | ------------------------------------- | ------------------------------------- | | Disk | At least 2.8TB (TLC NVMe recommended) | At least 1.8TB (TLC NVMe recommended) | | Memory | 16GB+ | 8GB+ | | CPU | Higher clock speed over core count | Higher clock speeds over core count | | Bandwidth | Stable 24Mbps+ | Stable 24Mbps+ | +## Base System Requirements + +Below are the minimum system requirements for running a Base node as of 2025-06-23, block number 31.9M: + +| | Archive Node | Full Node | +| --------- | ------------------------------------- | ------------------------------------- | +| Disk | At least 4.1TB (TLC NVMe recommended) | At least 2TB (TLC NVMe recommended) | +| Memory | 128GB+ | 128GB+ | +| CPU | 6 cores+, Higher clock speed over core count | 6 cores+, Higher clock speed over core count | +| Bandwidth | Stable 24Mbps+ | Stable 24Mbps+ | + +:::note +**On CPU clock speeds**: We've seen >1s payload latency on EPYC GENOA 9254 (2.9 GHz/3.9 GHz), best performance we see on AMD EPYC™ 4004. + +**On CPU cores for Base**: 5+ cores are needed because the state root task splits work into separate threads that run in parallel with each other. The state root task is generally more performant and can scale with the number of CPU cores, while regular state root always uses only one core. This is not a requirement for Mainnet, but for Base you may encounter block processing latencies of more than 2s, which can lead to lagging behind the head of the chain. +::: + + #### QLC and TLC It is crucial to understand the difference between QLC and TLC NVMe drives when considering the disk requirement. @@ -34,29 +41,29 @@ QLC (Quad-Level Cell) NVMe drives utilize four bits of data per cell, allowing f TLC (Triple-Level Cell) NVMe drives, on the other hand, use three bits of data per cell. While they have a slightly lower storage density compared to QLC drives, TLC drives offer faster performance. They typically have higher read and write speeds, making them more suitable for demanding tasks such as data-intensive applications, gaming, and multimedia editing. TLC drives also tend to have a higher endurance, making them more durable and longer-lasting. -Prior to purchasing an NVMe drive, it is advisable to research and determine whether the disk will be based on QLC or TLC technology. An overview of recommended and not-so-recommended NVMe boards can be found at [here]( https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). +Prior to purchasing an NVMe drive, it is advisable to research and determine whether the disk will be based on QLC or TLC technology. An overview of recommended and not-so-recommended NVMe boards can be found at [here](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). ### Disk There are multiple types of disks to sync Reth, with varying size requirements, depending on the syncing mode. As of April 2025 at block number 22.1M: -* Archive Node: At least 2.8TB is required -* Full Node: At least 1.8TB is required +- Archive Node: At least 2.8TB is required +- Full Node: At least 1.8TB is required NVMe based SSD drives are recommended for the best performance, with SATA SSDs being a cheaper alternative. HDDs are the cheapest option, but they will take the longest to sync, and are not recommended. As of February 2024, syncing an Ethereum mainnet node to block 19.3M on NVMe drives takes about 50 hours, while on a GCP "Persistent SSD" it takes around 5 days. -> **Note** -> -> It is highly recommended to choose a TLC drive when using an NVMe drive, and not a QLC drive. See [the note](#qlc-and-tlc) above. A list of recommended drives can be found [here]( https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). +:::tip +It is highly recommended to choose a TLC drive when using an NVMe drive, and not a QLC drive. See [the note](#qlc-and-tlc) above. A list of recommended drives can be found [here](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). +::: ### CPU Most of the time during syncing is spent executing transactions, which is a single-threaded operation due to potential state dependencies of a transaction on previous ones. -As a result, the number of cores matters less, but in general higher clock speeds are better. More cores are better for parallelizable [stages](https://github.com/paradigmxyz/reth/blob/main/docs/crates/stages.md) (like sender recovery or bodies downloading), but these stages are not the primary bottleneck for syncing. +As a result, the number of cores matters less, but in general higher clock speeds are better. More cores are better for parallelizable [stages](https://github.com/paradigmxyz/reth/blob/main/docs/crates/stages) (like sender recovery or bodies downloading), but these stages are not the primary bottleneck for syncing. ### Memory diff --git a/book/vocs/docs/pages/sdk/custom-node/modifications.mdx b/book/vocs/docs/pages/sdk/custom-node/modifications.mdx new file mode 100644 index 0000000000..b375feb901 --- /dev/null +++ b/book/vocs/docs/pages/sdk/custom-node/modifications.mdx @@ -0,0 +1 @@ +# Modifying Node Components diff --git a/book/vocs/docs/pages/sdk/custom-node/prerequisites.mdx b/book/vocs/docs/pages/sdk/custom-node/prerequisites.mdx new file mode 100644 index 0000000000..8dbf0a1bf4 --- /dev/null +++ b/book/vocs/docs/pages/sdk/custom-node/prerequisites.mdx @@ -0,0 +1 @@ +# Prerequisites and Considerations diff --git a/book/vocs/docs/pages/sdk/examples/modify-node.mdx b/book/vocs/docs/pages/sdk/examples/modify-node.mdx new file mode 100644 index 0000000000..b8f21a06bb --- /dev/null +++ b/book/vocs/docs/pages/sdk/examples/modify-node.mdx @@ -0,0 +1,16 @@ +# How to Modify an Existing Node + +This guide demonstrates how to extend a Reth node with custom functionality, including adding RPC endpoints, modifying transaction validation, and implementing custom services. + +## Adding Custom RPC Endpoints + +One of the most common modifications is adding custom RPC methods to expose additional functionality. + +### Basic Custom RPC Module + + +## Next Steps + +- Explore [Standalone Components](/sdk/examples/standalone-components) for direct blockchain interaction +- Learn about [Custom Node Building](/sdk/custom-node/prerequisites) for production deployments +- Review [Type System](/sdk/typesystem/block) for working with blockchain data diff --git a/book/vocs/docs/pages/sdk/examples/standalone-components.mdx b/book/vocs/docs/pages/sdk/examples/standalone-components.mdx new file mode 100644 index 0000000000..3c16e1cf12 --- /dev/null +++ b/book/vocs/docs/pages/sdk/examples/standalone-components.mdx @@ -0,0 +1,12 @@ +# Using Standalone Components + +This guide demonstrates how to use Reth components independently without running a full node. This is useful for building tools, analyzers, indexers, or any application that needs direct access to blockchain data. + +## Direct Database Access + + +## Next Steps + +- Learn about [Modifying Nodes](/sdk/examples/modify-node) to add functionality +- Explore the [Type System](/sdk/typesystem/block) for working with data +- Check [Custom Node Building](/sdk/custom-node/prerequisites) for production use diff --git a/book/vocs/docs/pages/sdk/node-components.mdx b/book/vocs/docs/pages/sdk/node-components.mdx new file mode 100644 index 0000000000..cdd4b93650 --- /dev/null +++ b/book/vocs/docs/pages/sdk/node-components.mdx @@ -0,0 +1,112 @@ +# Node Components + +Reth's modular architecture allows developers to customize and extend individual components of the node. Each component serves a specific purpose and can be replaced or modified to suit your needs. + +## Architecture Overview + +A Reth node consists of several key components that work together and can interact with each other: + +```mermaid +graph LR + Network[Network] --> Pool[Transaction Pool] + Network --> Consensus[Consensus] + Pool --> DB[(Database)] + Consensus --> EVM + EVM --> DB[(Database)] + RPC[RPC Server] --> Pool + RPC --> DB + RPC --> EVM +``` + +## Core Components + +### [Network](/sdk/node-components/network) +Handles P2P communication, peer discovery, and block/transaction propagation. The network component is responsible for: +- Peer discovery and management +- Transaction gossip +- State synchronization (downloading blocks) +- Protocol message handling + +### [Transaction Pool](/sdk/node-components/pool) +Manages pending transactions before they're included in blocks: +- Transaction validation +- Ordering and prioritization +- Transaction replacement logic +- Pool size management and eviction + +### [Consensus](/sdk/node-components/consensus) +Validates blocks according to protocol rules: +- Header validation (e.g. gas limit, base fee) +- Block body validation (e.g. transaction root) + +### [EVM](/sdk/node-components/evm) +Executes transactions and manages state transitions: +- Block execution +- Transaction execution +- Block building + +### [RPC](/sdk/node-components/rpc) +Provides external API access to the node: +- Standard Ethereum JSON-RPC methods +- Custom endpoints +- WebSocket subscriptions + +## Component Customization + +Each component can be customized through Reth's builder pattern: + +```rust +use reth_ethereum::node::{EthereumNode, NodeBuilder}; + +let node = NodeBuilder::new(config) + .with_types::() + .with_components(|ctx| { + // Use the ComponentBuilder to customize components + ctx.components_builder() + // Custom network configuration + .network(|network_builder| { + network_builder + .peer_manager(custom_peer_manager) + .build() + }) + // Custom transaction pool + .pool(|pool_builder| { + pool_builder + .validator(custom_validator) + .ordering(custom_ordering) + .build() + }) + // Custom consensus + .consensus(custom_consensus) + // Custom EVM configuration + .evm(|evm_builder| { + evm_builder + .with_precompiles(custom_precompiles) + .build() + }) + // Build all components + .build() + }) + .build() + .await?; +``` + +## Component Lifecycle + +Components follow a specific lifecycle startng from node builder initialization to shutdown: + +1. **Initialization**: Components are created with their dependencies +2. **Configuration**: Settings and parameters are applied +3. **Startup**: Components begin their main operations +4. **Runtime**: Components process requests and events +5. **Shutdown**: Graceful cleanup and resource release + + +## Next Steps + +Explore each component in detail: +- [Network Component](/sdk/node-components/network) - P2P and synchronization +- [Transaction Pool](/sdk/node-components/pool) - Mempool management +- [Consensus](/sdk/node-components/consensus) - Block validation +- [EVM](/sdk/node-components/evm) - Transaction execution +- [RPC](/sdk/node-components/rpc) - External APIs diff --git a/book/vocs/docs/pages/sdk/node-components/consensus.mdx b/book/vocs/docs/pages/sdk/node-components/consensus.mdx new file mode 100644 index 0000000000..1541d351d5 --- /dev/null +++ b/book/vocs/docs/pages/sdk/node-components/consensus.mdx @@ -0,0 +1,45 @@ +# Consensus Component + +The consensus component validates blocks according to Ethereum protocol rules, handles chain reorganizations, and manages the canonical chain state. + +## Overview + +The consensus component is responsible for: +- Validating block headers and bodies +- Verifying state transitions +- Managing fork choice rules +- Handling chain reorganizations +- Tracking finalized and safe blocks +- Validating blob transactions (EIP-4844) + +## Key Concepts + +### Block Validation +The consensus component performs multiple validation steps: +1. **Pre-execution validation**: Header and body checks before running transactions +2. **Post-execution validation**: State root and receipts verification after execution + +### Header Validation +Headers must pass several checks: +- **Timestamp**: Must be greater than parent's timestamp +- **Gas limit**: Changes must be within protocol limits (1/1024 of parent) +- **Extra data**: Size restrictions based on network rules +- **Difficulty/PoS**: Appropriate validation for pre/post-merge + +### Body Validation +Block bodies are validated against headers: +- **Transaction root**: Merkle root must match header +- **Withdrawals root**: For post-Shanghai blocks +- **Blob validation**: For EIP-4844 transactions + +### Fork Choice +The consensus engine determines the canonical chain: +- Tracks multiple chain branches +- Applies fork choice rules (longest chain, most work, etc.) +- Handles reorganizations when better chains are found + +## Next Steps + +- Explore [EVM](/sdk/node-components/evm) execution +- Learn about [RPC](/sdk/node-components/rpc) server integration +- Understand [Transaction Pool](/sdk/node-components/pool) interaction \ No newline at end of file diff --git a/book/vocs/docs/pages/sdk/node-components/evm.mdx b/book/vocs/docs/pages/sdk/node-components/evm.mdx new file mode 100644 index 0000000000..6047f69bd7 --- /dev/null +++ b/book/vocs/docs/pages/sdk/node-components/evm.mdx @@ -0,0 +1,45 @@ +# EVM Component + +The EVM (Ethereum Virtual Machine) component handles transaction execution and state transitionss. It's responsible for processing transactions and updating the blockchain state. + +## Overview + +The EVM component manages: +- Transaction execution +- State transitions and updates +- Gas calculation and metering +- Custom precompiles and opcodes +- Block execution and validation +- State management and caching + +## Architecture + + +## Key Concepts + +### Transaction Execution +The EVM executes transactions in a deterministic way: +1. **Environment Setup**: Configure block and transaction context +2. **State Access**: Load accounts and storage from the database +3. **Execution**: Run EVM bytecode with gas metering +4. **State Updates**: Apply changes to accounts and storage +5. **Receipt Generation**: Create execution receipts with logs + +### Block Execution +Block executors process all transactions in a block: +- Validate pre-state conditions +- Execute transactions sequentially +- Apply block rewards +- Verify post-state (state root, receipts root) + +### Block Building +Block builders construct new blocks for proposal: +- Select transactions (e.g. mempool) +- Order and execute transactions +- Seal the block with a header (state root) + +## Next Steps + +- Learn about [RPC](/sdk/node-components/rpc) server integration +- Explore [Transaction Pool](/sdk/node-components/pool) interaction +- Review [Consensus](/sdk/node-components/consensus) validation \ No newline at end of file diff --git a/book/vocs/docs/pages/sdk/node-components/network.mdx b/book/vocs/docs/pages/sdk/node-components/network.mdx new file mode 100644 index 0000000000..308087305a --- /dev/null +++ b/book/vocs/docs/pages/sdk/node-components/network.mdx @@ -0,0 +1,55 @@ +# Network Component + +The network component handles all peer-to-peer communication in Reth, including peer discovery, connection management, and protocol message handling. + +## Overview + +The network stack implements the Ethereum Wire Protocol (ETH) and provides: +- Peer discovery via discv4 and discv5 +- Connection management with configurable peer limits +- Transaction propagation +- State synchronization +- Request/response protocols (e.g. GetBHeaders, GetBodies) + +## Architecture + +```mermaid +graph TD + NetworkManager[Network Manager] --> Discovery[Discovery] + NetworkManager --> Sessions[Session Manager] + NetworkManager --> Swarm[Swarm] + + Discovery --> discv4[discv4] + Discovery --> discv5[discv5] + Discovery --> DNS[DNS Discovery] + + Sessions --> ETH[ETH Protocol] +``` + +## Key Concepts + +### Peer Discovery +The network uses multiple discovery mechanisms to find and connect to peers: +- **discv4**: UDP-based discovery protocol for finding peers +- **discv5**: Improved discovery protocol with better security +- **DNS Discovery**: Peer lists published via DNS for bootstrap + +### Connection Management +- Maintains separate limits for inbound and outbound connections +- Implements peer scoring and reputation tracking +- Handles connection lifecycle and graceful disconnections + +### Protocol Support +- **ETH Protocol**: Core Ethereum wire protocol for blocks and transactions + +### Message Broadcasting +The network efficiently propagates new blocks and transactions to peers using: +- Transaction pooling and deduplication +- Block announcement strategies +- Bandwidth management + +## Next Steps + +- Learn about the [Transaction Pool](/sdk/node-components/pool) +- Understand [Consensus](/sdk/node-components/consensus) integration +- Explore [RPC](/sdk/node-components/rpc) server setup \ No newline at end of file diff --git a/book/vocs/docs/pages/sdk/node-components/pool.mdx b/book/vocs/docs/pages/sdk/node-components/pool.mdx new file mode 100644 index 0000000000..301d794b3f --- /dev/null +++ b/book/vocs/docs/pages/sdk/node-components/pool.mdx @@ -0,0 +1,80 @@ +# Transaction Pool Component + +The transaction pool (mempool) manages pending transactions before they are included in blocks. It handles validation, ordering, replacement, and eviction of transactions. + +## Overview + +The transaction pool is responsible for: +- Validating incoming transactions +- Maintaining transaction ordering (e.g. by fees) +- Handling transaction replacement +- Managing pool size limits +- Broadcasting transactions to peers +- Providing transactions for block building + +## Architecture + +```mermaid +graph TD + API[Pool API] --> Validator[Transaction Validator] + API --> Pool[Transaction Pool] + + Pool --> SubPools[Sub-Pools] + SubPools --> Pending[Pending Pool] + SubPools --> Queued[Queued Pool] + SubPools --> Base[Base Fee Pool] + + Pool --> Ordering[Transaction Ordering] + Pool --> Listeners[Event Listeners] + + Validator --> Checks[Validation Checks] + Checks --> Nonce[Nonce Check] + Checks --> Balance[Balance Check] +``` + +## Key Concepts + +### Transaction Validation +The pool validates transactions before accepting them, checking: +- Sender has sufficient balance for gas and value +- Nonce is correct (either next expected or future) +- Gas price meets minimum requirements +- Transaction size is within limits +- Signature is valid + +### Transaction Ordering +Transactions are ordered by their effective tip per gas to maximize block rewards. Custom ordering strategies can prioritize certain addresses or implement MEV protection. + +### Sub-Pools +- **Pending**: Transactions ready for inclusion (correct nonce) +- **Queued**: Future transactions (nonce gap exists) +- **Base Fee**: Transactions priced below current base fee + +### Pool Maintenance +The pool requires periodic maintenance to: +- Remove stale transactions +- Revalidate after chain reorganizations +- Update base fee thresholds +- Enforce size limits + +## Advanced Features + +### Blob Transaction Support +EIP-4844 introduces blob transactions with separate blob storage and special validation rules. + +### Transaction Filters +Custom filters can block specific addresses, limit gas prices, or implement custom acceptance criteria. + +### Event System +The pool supports an event system that allows other components to listen for transaction lifecycle events such as: +- Transaction added +- Transaction removed +- Transaction replaced +- Transaction promoted to pending state + + +## Next Steps + +- Learn about [Consensus](/sdk/node-components/consensus) validation +- Explore [EVM](/sdk/node-components/evm) execution +- Understand [RPC](/sdk/node-components/rpc) server integration \ No newline at end of file diff --git a/book/vocs/docs/pages/sdk/node-components/rpc.mdx b/book/vocs/docs/pages/sdk/node-components/rpc.mdx new file mode 100644 index 0000000000..4f9fa1e3d7 --- /dev/null +++ b/book/vocs/docs/pages/sdk/node-components/rpc.mdx @@ -0,0 +1,20 @@ +# RPC Component + +The RPC component provides external API access to the node, implementing the Ethereum JSON-RPC specification and allowing custom extensions. + +## Overview + +The RPC component provides: +- Standard Ethereum JSON-RPC methods +- WebSocket subscriptions +- Custom method extensions +- Rate limiting and access control +- Request batching support +- Multiple transport protocols (HTTP, WebSocket, IPC) + + +## Next Steps + +- Explore [Network](/sdk/node-components/network) component integration +- Learn about [Transaction Pool](/sdk/node-components/pool) APIs +- Understand [EVM](/sdk/node-components/evm) execution context \ No newline at end of file diff --git a/book/vocs/docs/pages/sdk/overview.mdx b/book/vocs/docs/pages/sdk/overview.mdx new file mode 100644 index 0000000000..b427ae8834 --- /dev/null +++ b/book/vocs/docs/pages/sdk/overview.mdx @@ -0,0 +1,127 @@ +# Reth for Developers + +Reth can be used as a library to build custom Ethereum nodes, interact with blockchain data, or create specialized tools for blockchain analysis and indexing. + +## What is the Reth SDK? + +The Reth SDK allows developers to: +- Use components of the Reth node as libraries +- Build custom Ethereum execution nodes with modified behavior (e.g. payload building) +- Access blockchain data directly from the database +- Create high-performance indexing solutions +- Extend a new with new RPC endpoints and functionality +- Implement custom consensus mechanisms +- Build specialized tools for blockchain analysis + +## Quick Start + +Add Reth to your project: + +## Ethereum + +```toml +[dependencies] +# Ethereum meta crate +reth-ethereum = { git = "https://github.com/paradigmxyz/reth" } +``` + +## Opstack + +```toml +[dependencies] +reth-op = { git = "https://github.com/paradigmxyz/reth" } +``` + +## Key Concepts + +### Node Architecture + +Reth is built with modularity in mind. The main components include: + +- **Primitives**: Core data type abstractions like `Block` +- **Node Builder**: Constructs and configures node instances +- **Database**: Efficient storage using MDBX and static files +- **Network**: P2P communication and block synchronization +- **Consensus**: Block validation and chain management +- **EVM**: Transaction execution and state transitions +- **RPC**: JSON-RPC server for external communication +- **Transaction Pool**: Pending transaction management + +### Dependency Management +Reth is primarily built on top of the [alloy](https://github.com/alloy-rs/alloy) ecosystem, which provides the necessary abstractions and implementations for core ethereum blockchain data types, transaction handling, and EVM execution. + + +### Type System + +Reth uses its own type system to handle different representations of blockchain data: + +- **Primitives**: Core types like `B256`, `Address`, `U256` +- **Transactions**: Multiple representations for different contexts (pooled, consensus, RPC) +- **Blocks**: Headers, bodies, and sealed blocks with proven properties +- **State**: Accounts, storage, and state transitions + +### Building Custom Nodes + +The node builder pattern allows you to customize every aspect of node behavior: + +```rust +use reth_ethereum::node::{EthereumNode, NodeBuilder}; + +// Build a custom node with modified components +let node = NodeBuilder::new(config) + // install the ethereum specific node primitives + .with_types::() + .with_components(|components| { + // Customize components here + components + }) + .build() + .await?; +``` + +## Architecture Overview + +```mermaid +graph TD + A[Node Builder] --> B[Database] + A --> C[Network] + A --> D[Consensus] + A --> E[EVM] + A --> F[RPC Server] + A --> G[Transaction Pool] + + B --> H[DB Storage] + B --> I[Static Files] + + C --> J[Discovery] + C --> K[ETH Protocol] + + E --> L[State Provider] + E --> M[Block Executor] +``` + +## Nodes Built with Reth + +Several production networks have been built using Reth's node builder pattern: + +### [BSC Reth](https://github.com/loocapro/reth-bsc) +A Binance Smart Chain execution client, implementing BSC-specific consensus rules and features. + +### [Bera Reth](https://github.com/berachain/bera-reth) +Berachain's execution client. + +### [Gnosis Reth](https://github.com/gnosischain/reth_gnosis) +Gnosis Chain's implementation using Reth. + + +## Next Steps + +- **[Node Components](/sdk/node-components)**: Deep dive into each component +- **[Type System](/sdk/typesystem/block)**: Understanding Reth's type system +- **[Custom Nodes](/sdk/custom-node/prerequisites)**: Building production nodes +- **[Examples](/sdk/examples/modify-node)**: Real-world implementations + +## Resources + +- [API Documentation](https://docs.rs/reth/latest/reth/) +- [GitHub Repository](https://github.com/paradigmxyz/reth) diff --git a/book/vocs/docs/pages/sdk/typesystem/block.mdx b/book/vocs/docs/pages/sdk/typesystem/block.mdx new file mode 100644 index 0000000000..450b4f93d1 --- /dev/null +++ b/book/vocs/docs/pages/sdk/typesystem/block.mdx @@ -0,0 +1,26 @@ +# Block Types + +The Reth type system provides a flexible abstraction for blocks through traits, allowing different implementations while maintaining type safety and consistency. + +## Type Relationships + +```mermaid +graph TD + Block[Block Trait] --> Header[BlockHeader Trait] + Block --> Body[BlockBody Trait] + + SealedBlock -.-> Block + SealedBlock --> SealedHeader + RecoveredBlock --> SealedBlock + + SealedHeader --> Header + + Body --> Transaction[Transactions] + Body --> Withdrawals[Withdrawals] +``` + +## Next Steps + +- Learn about [Transaction Types](/sdk/typesystem/transaction-types) +- Understand [Consensus](/sdk/node-components/consensus) validation +- Explore [EVM](/sdk/node-components/evm) execution diff --git a/book/vocs/docs/pages/sdk/typesystem/transaction-types.mdx b/book/vocs/docs/pages/sdk/typesystem/transaction-types.mdx new file mode 100644 index 0000000000..e541727da8 --- /dev/null +++ b/book/vocs/docs/pages/sdk/typesystem/transaction-types.mdx @@ -0,0 +1,92 @@ +# Transaction Types and Representations + +Reth provides multiple transaction representations optimized for different stages of the transaction lifecycle. Understanding these types is crucial for working with the node's transaction handling pipeline. + +## Transaction Lifecycle + +Transactions go through several stages, each with its own optimized representation: + +```mermaid +graph LR + RPC[RPC Transaction] --> Pool[Pooled Transaction] + Pool --> Consensus[Consensus Transaction] + Consensus --> Executed[Executed Transaction] + + Pool -.-> RPC + Consensus -.-> Pool +``` + +## Transaction Representations + +### RPC Transaction + +The RPC representation is designed for JSON-RPC communication with external clients. It uses JSON-compatible types and includes all information clients need to understand transaction status. + +Key characteristics: +- **JSON-compatible types**: Uses U256 for numbers, hex strings for binary data +- **Optional fields**: Supports both legacy and EIP-1559 transactions with appropriate fields +- **Block context**: Includes block hash, number, and index when transaction is mined +- **Human-readable**: Optimized for external consumption and debugging +- **Complete information**: Contains all transaction details including signature components + +Use cases: +- Sending transactions via `eth_sendTransaction` +- Querying transaction details via `eth_getTransactionByHash` +- Transaction receipts and history +- Block explorer displays + +### Pooled Transaction + +The pooled representation is optimized for mempool storage and validation. It pre-computes expensive values and includes additional data needed for pool management. + +Key characteristics: +- **Cached values**: Pre-computed sender address and transaction cost to avoid repeated calculations +- **Validation ready**: Includes all data needed for quick pool validation +- **Blob support**: Handles EIP-4844 blob sidecars separately from the core transaction +- **Memory efficient**: Optimized structure for storing thousands of pending transactions +- **Priority ordering**: Structured for efficient sorting by gas price/priority fee + +Use cases: +- Transaction pool storage and management +- Gas price ordering and replacement logic +- Validation against account state +- Broadcasting to peers + +### Consensus Transaction + +The consensus representation is the canonical format used in blocks and for network propagation. It's the most compact representation and follows Ethereum's wire protocol. + +Key characteristics: +- **Type safety**: Enum variants for different transaction types (Legacy, EIP-2930, EIP-1559, EIP-4844) +- **Compact encoding**: For storage on disk +- **No redundancy**: Minimal data, with values like sender recovered from signature when needed + +Use cases: +- Block construction and validation +- Network propagation between nodes +- Persistent storage in the database +- State transition execution + +## Representation Conversions + +### RPC → Pooled +When transactions arrive via RPC: +1. Validate JSON format and fields +2. Convert to consensus format +3. Recover sender from signature +4. Create pooled representation + +### Pooled → Consensus +When including in a block: +1. Extract core transaction consensus data +2. Remove cached values (sender, cost) + +### Consensus → RPC +When serving RPC requests: +1. Add block context (hash, number, index) + +## Next Steps + +- Learn about [Block Types](/sdk/typesystem/block) and how transactions fit in blocks +- Understand [Transaction Pool](/sdk/node-components/pool) management +- Explore [EVM](/sdk/node-components/evm) transaction execution \ No newline at end of file diff --git a/book/vocs/docs/public/alchemy.png b/book/vocs/docs/public/alchemy.png new file mode 100644 index 0000000000000000000000000000000000000000..422feb032775c227b435557d90ec16ed3223791d GIT binary patch literal 27206 zcmYIv19YU@(spcH6Hjd0wyjPkwv9>BF(;hZ$s`loww;NsiPdrb-0z-q|Fw2=z1_R? zRy|d_DpEyB8X18A0SpWbSyo0u4GavD>+^jz9L(o4^OU^y=L@`(jIJvf7$W9>9^haZ zS$Lmcg1f3oi-A>55uJQ~fU*=-6a@pTjYoV1K!brUDZb6Sb1D_~o0v@wDRArnMg-G6~lZ!NZvlUjM+@#;ZZ)@0Uax z=BgtH#SeTpOI#=A>38xdhLT~DQnER9s?}Q8pEQDaG0F1OQ$ixT3Fk!ch~J;Md)fEi z1bGK)xQ6X(XisZQ3y}Q!Be=1+sQI}ro4ck_!3sH3g$g*k{OejoKcXDDw<+{s`dN_v zZ&^%1;8i-EE}tlpwm`h1l0%UFX40x@guLRz3j_S$VpT_r`NjJd{|i;VhBjWd$qHJ+ zZ}=Hz7{zGQA1B=8pUZ|O%6ifX41z#Ck=p$q(FHrhBSW$4Ahe~Pe>RHwY1(HYr}VM6 zq4{9>Ol~7Fkq4LQL_yB%#+3E!-Uji{Zh#3SM9IwH`Ab!j=^Fizg|zNpbCbV3Lw5p~ zc=avm1lsQz9KQdTFaTbqS==PnHf_s9c`@p2u`@x;;fKY`5VUnjsPenpve?{zSwu3^ zN;jKFbG9v4uc4g-N+L-`%0!e~s9?wSO~+dwwPxd{a{Z4=E!N=@vPBFTZ_Asim}G>6 z2=<%!f&A+W#e)q3|F}~9ph525e>qxW1_N=acUf#a^Lr1?AHln0$k7bxceR-a7Smslpx$SeCRe^_JuO+J5qyELy^z59! zpT}Qwddh$0Y7dB;1b;g7Z5Se~6xL7Ls%a?*PL^AAmW z14NmSHLt|?o{?N{Byg?2U4i*QU||^3q(-qg=xA>tcvQ(lTzGsNcCnt@t-j2AaR1Vl zPT*>X(zDX5=VSp!%DsE%pg@DxL%0AmX^lgIG-rmk||7uwQ2%kB; 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⪚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 XV5Z6i1We5Q00000NkvXXu0mjfxhXde literal 0 HcmV?d00001 diff --git a/book/vocs/docs/public/logo.png b/book/vocs/docs/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..04a889b9d29a37b462ff33adf36f67b5210a75c0 GIT binary patch literal 100250 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 literal 0 HcmV?d00001 diff --git a/book/developers/exex/assets/remote_exex.png b/book/vocs/docs/public/remote_exex.png similarity index 100% rename from book/developers/exex/assets/remote_exex.png rename to book/vocs/docs/public/remote_exex.png diff --git a/book/vocs/docs/public/reth-prod.png b/book/vocs/docs/public/reth-prod.png new file mode 100644 index 0000000000000000000000000000000000000000..d06c4579ccfbf6c8be4b77bd4d9438dd8c80e591 GIT binary patch literal 324203 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%0DOzT1?3!a~KMdsUSn8Tdjc9 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%0AF= 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

4WMX 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 Am;e9( literal 0 HcmV?d00001 diff --git a/book/vocs/docs/public/succinct.png b/book/vocs/docs/public/succinct.png new file mode 100644 index 0000000000000000000000000000000000000000..1261974aa8aae861bfc92499311c9d81c4de6220 GIT binary patch literal 2588 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 + + + + Redirecting... + + + + + +

+ +` +} + +// Generate redirect files +Object.entries(redirects).forEach(([from, to]) => { + // Add base path to target if it doesn't already have it + const finalTarget = to.startsWith(basePath) ? to : `${basePath}${to}` + + // Remove base path if present in from path + const fromPath = from.replace(/^\/reth\//, '') + + // Generate both with and without .html + const paths = [fromPath] + if (!fromPath.endsWith('.html')) { + paths.push(`${fromPath}.html`) + } + + paths.forEach(path => { + const filePath = join('./docs/dist', path) + if (!path.includes('.')) { + // It's a directory path, create index.html + const indexPath = join('./docs/dist', path, 'index.html') + mkdirSync(dirname(indexPath), { recursive: true }) + writeFileSync(indexPath, generateRedirectHtml(finalTarget)) + } else { + // It's a file path + mkdirSync(dirname(filePath), { recursive: true }) + writeFileSync(filePath, generateRedirectHtml(finalTarget)) + } + }) +}) + +console.log('Redirects generated successfully!') \ No newline at end of file diff --git a/book/vocs/links-report.json b/book/vocs/links-report.json new file mode 100644 index 0000000000..830568362a --- /dev/null +++ b/book/vocs/links-report.json @@ -0,0 +1,17 @@ +{ + "timestamp": "2025-06-23T11:20:27.303Z", + "totalFiles": 106, + "totalLinks": 150, + "brokenLinks": [ + { + "file": "docs/pages/index.mdx", + "link": "/introduction/benchmarks", + "line": 110, + "reason": "Absolute path not found: /introduction/benchmarks" + } + ], + "summary": { + "brokenCount": 1, + "validCount": 149 + } +} \ No newline at end of file diff --git a/book/vocs/package.json b/book/vocs/package.json new file mode 100644 index 0000000000..912bc13634 --- /dev/null +++ b/book/vocs/package.json @@ -0,0 +1,22 @@ +{ + "name": "vocs", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vocs dev", + "build": "vocs build && bun generate-redirects.ts", + "preview": "vocs preview", + "check-links": "bun check-links.ts", + "generate-redirects": "bun generate-redirects.ts" + }, + "dependencies": { + "react": "latest", + "react-dom": "latest", + "vocs": "latest" + }, + "devDependencies": { + "@types/react": "latest", + "typescript": "latest" + } +} \ No newline at end of file diff --git a/book/vocs/redirects.config.ts b/book/vocs/redirects.config.ts new file mode 100644 index 0000000000..21521d5e86 --- /dev/null +++ b/book/vocs/redirects.config.ts @@ -0,0 +1,27 @@ +export const redirects: Record = { + '/intro': '/overview', + // Installation redirects + '/installation/installation': '/installation/binaries', + // Run a node redirects + '/run/run-a-node': '/run/overview', + '/run/mainnet': '/run/ethereum', + '/run/optimism': '/run/opstack', + '/run/sync-op-mainnet': '/run/faq/sync-op-mainnet', + '/run/private-testnet': '/run/private-testnets', + '/run/observability': '/run/monitoring', + '/run/config': '/run/configuration', + '/run/transactions': '/run/faq/transactions', + '/run/pruning': '/run/faq/pruning', + '/run/ports': '/run/faq/ports', + '/run/troubleshooting': '/run/faq/troubleshooting', + // Exex + '/developers/exex': '/exex/overview', + '/developers/exex/how-it-works': '/exex/how-it-works', + '/developers/exex/hello-world': '/exex/hello-world', + '/developers/exex/tracking-state': '/exex/tracking-state', + '/developers/exex/remote': '/exex/remote', + // Contributing + '/developers/contribute': '/introduction/contributing', +} + +export const basePath = '/'; \ No newline at end of file diff --git a/book/vocs/sidebar.ts b/book/vocs/sidebar.ts new file mode 100644 index 0000000000..65829d8e48 --- /dev/null +++ b/book/vocs/sidebar.ts @@ -0,0 +1,514 @@ +import { SidebarItem } from "vocs"; + +export const sidebar: SidebarItem[] = [ + { + text: "Introduction", + items: [ + { + text: "Overview", + link: "/overview" + }, + { + text: "Why Reth?", + link: "/introduction/why-reth" + }, + { + text: "Contributing", + link: "/introduction/contributing" + } + ] + }, + { + text: "Reth for Node Operators", + items: [ + { + text: "System Requirements", + link: "/run/system-requirements" + }, + { + text: "Installation", + collapsed: true, + items: [ + { + text: "Overview", + link: "/installation/overview" + }, + { + text: "Pre-Built Binaries", + link: "/installation/binaries" + }, + { + text: "Docker", + link: "/installation/docker" + }, + { + text: "Build from Source", + link: "/installation/source" + }, + { + text: "Build for ARM devices", + link: "/installation/build-for-arm-devices" + }, + { + text: "Update Priorities", + link: "/installation/priorities" + } + ] + }, + { + text: "Running a Node", + items: [ + { + text: "Overview", + link: "/run/overview", + }, + { + text: "Networks", + // link: "/run/networks", + items: [ + { + text: "Ethereum", + link: "/run/ethereum", + // items: [ + // { + // text: "Snapshots", + // link: "/run/ethereum/snapshots" + // } + // ] + }, + { + text: "OP-stack", + link: "/run/opstack", + // items: [ + // { + // text: "Caveats OP-Mainnet", + // link: "/run/opstack/op-mainnet-caveats" + // } + // ] + }, + { + text: "Private testnets", + link: "/run/private-testnets" + } + ] + }, + ] + }, + { + text: "Configuration", + link: "/run/configuration" + }, + { + text: "Monitoring", + link: "/run/monitoring" + }, + { + text: "FAQ", + link: "/run/faq", + collapsed: true, + items: [ + { + text: "Transaction Types", + link: "/run/faq/transactions" + }, + { + text: "Pruning & Full Node", + link: "/run/faq/pruning" + }, + { + text: "Ports", + link: "/run/faq/ports" + }, + { + text: "Profiling", + link: "/run/faq/profiling" + }, + { + text: "Sync OP Mainnet", + link: "/run/faq/sync-op-mainnet" + } + ] + } + ] + }, + { + text: "Reth as a library", + items: [ + { + text: "Overview", + link: "/sdk/overview" + }, + { + text: "Typesystem", + items: [ + { + text: "Block", + link: "/sdk/typesystem/block" + }, + { + text: "Transaction types", + link: "/sdk/typesystem/transaction-types" + } + ] + }, + { + text: "What is in a node?", + collapsed: false, + items: [ + { + text: "Network", + link: "/sdk/node-components/network" + }, + { + text: "Pool", + link: "/sdk/node-components/pool" + }, + { + text: "Consensus", + link: "/sdk/node-components/consensus" + }, + { + text: "EVM", + link: "/sdk/node-components/evm" + }, + { + text: "RPC", + link: "/sdk/node-components/rpc" + } + ] + }, + // TODO + // { + // text: "Build a custom node", + // items: [ + // { + // text: "Prerequisites and Considerations", + // link: "/sdk/custom-node/prerequisites" + // }, + // { + // text: "What modifications and how", + // link: "/sdk/custom-node/modifications" + // } + // ] + // }, + // { + // text: "Examples", + // items: [ + // { + // text: "How to modify an existing node", + // items: [ + // { + // text: "Additional features: RPC endpoints, services", + // link: "/sdk/examples/modify-node" + // } + // ] + // }, + // { + // text: "How to use standalone components", + // items: [ + // { + // text: "Interact with the disk directly + caveats", + // link: "/sdk/examples/standalone-components" + // } + // ] + // } + // ] + // } + ] + }, + { + text: "Execution Extensions", + items: [ + { + text: "Overview", + link: "/exex/overview" + }, + { + text: "How do ExExes work?", + link: "/exex/how-it-works" + }, + { + text: "Hello World", + link: "/exex/hello-world" + }, + { + text: "Tracking State", + link: "/exex/tracking-state" + }, + { + text: "Remote", + link: "/exex/remote" + } + ] + }, + { + text: "Interacting with Reth over JSON-RPC", + + items: [ + { + text: "Overview", + link: "/jsonrpc/intro", + }, + { + text: "eth", + link: "/jsonrpc/eth" + }, + { + text: "web3", + link: "/jsonrpc/web3" + }, + { + text: "net", + link: "/jsonrpc/net" + }, + { + text: "txpool", + link: "/jsonrpc/txpool" + }, + { + text: "debug", + link: "/jsonrpc/debug" + }, + { + text: "trace", + link: "/jsonrpc/trace" + }, + { + text: "admin", + link: "/jsonrpc/admin" + }, + { + text: "rpc", + link: "/jsonrpc/rpc" + } + ] + }, + { + text: "CLI Reference", + link: "/cli/cli", + collapsed: false, + items: [ + { + text: "reth", + link: "/cli/reth", + collapsed: false, + items: [ + { + text: "reth node", + link: "/cli/reth/node" + }, + { + text: "reth init", + link: "/cli/reth/init" + }, + { + text: "reth init-state", + link: "/cli/reth/init-state" + }, + { + text: "reth import", + link: "/cli/reth/import" + }, + { + text: "reth import-era", + link: "/cli/reth/import-era" + }, + { + text: "reth dump-genesis", + link: "/cli/reth/dump-genesis" + }, + { + text: "reth db", + link: "/cli/reth/db", + collapsed: true, + items: [ + { + text: "reth db stats", + link: "/cli/reth/db/stats" + }, + { + text: "reth db list", + link: "/cli/reth/db/list" + }, + { + text: "reth db checksum", + link: "/cli/reth/db/checksum" + }, + { + text: "reth db diff", + link: "/cli/reth/db/diff" + }, + { + text: "reth db get", + link: "/cli/reth/db/get", + collapsed: true, + items: [ + { + text: "reth db get mdbx", + link: "/cli/reth/db/get/mdbx" + }, + { + text: "reth db get static-file", + link: "/cli/reth/db/get/static-file" + } + ] + }, + { + text: "reth db drop", + link: "/cli/reth/db/drop" + }, + { + text: "reth db clear", + link: "/cli/reth/db/clear", + collapsed: true, + items: [ + { + text: "reth db clear mdbx", + link: "/cli/reth/db/clear/mdbx" + }, + { + text: "reth db clear static-file", + link: "/cli/reth/db/clear/static-file" + } + ] + }, + { + text: "reth db version", + link: "/cli/reth/db/version" + }, + { + text: "reth db path", + link: "/cli/reth/db/path" + } + ] + }, + { + text: "reth download", + link: "/cli/reth/download" + }, + { + text: "reth stage", + link: "/cli/reth/stage", + collapsed: true, + items: [ + { + text: "reth stage run", + link: "/cli/reth/stage/run" + }, + { + text: "reth stage drop", + link: "/cli/reth/stage/drop" + }, + { + text: "reth stage dump", + link: "/cli/reth/stage/dump", + collapsed: true, + items: [ + { + text: "reth stage dump execution", + link: "/cli/reth/stage/dump/execution" + }, + { + text: "reth stage dump storage-hashing", + link: "/cli/reth/stage/dump/storage-hashing" + }, + { + text: "reth stage dump account-hashing", + link: "/cli/reth/stage/dump/account-hashing" + }, + { + text: "reth stage dump merkle", + link: "/cli/reth/stage/dump/merkle" + } + ] + }, + { + text: "reth stage unwind", + link: "/cli/reth/stage/unwind", + collapsed: true, + items: [ + { + text: "reth stage unwind to-block", + link: "/cli/reth/stage/unwind/to-block" + }, + { + text: "reth stage unwind num-blocks", + link: "/cli/reth/stage/unwind/num-blocks" + } + ] + } + ] + }, + { + text: "reth p2p", + link: "/cli/reth/p2p", + collapsed: true, + items: [ + { + text: "reth p2p header", + link: "/cli/reth/p2p/header" + }, + { + text: "reth p2p body", + link: "/cli/reth/p2p/body" + }, + { + text: "reth p2p rlpx", + link: "/cli/reth/p2p/rlpx", + collapsed: true, + items: [ + { + text: "reth p2p rlpx ping", + link: "/cli/reth/p2p/rlpx/ping" + } + ] + } + ] + }, + { + text: "reth config", + link: "/cli/reth/config" + }, + { + text: "reth debug", + link: "/cli/reth/debug", + collapsed: true, + items: [ + { + text: "reth debug execution", + link: "/cli/reth/debug/execution" + }, + { + text: "reth debug merkle", + link: "/cli/reth/debug/merkle" + }, + { + text: "reth debug in-memory-merkle", + link: "/cli/reth/debug/in-memory-merkle" + }, + { + text: "reth debug build-block", + link: "/cli/reth/debug/build-block" + } + ] + }, + { + text: "reth recover", + link: "/cli/reth/recover", + collapsed: true, + items: [ + { + text: "reth recover storage-tries", + link: "/cli/reth/recover/storage-tries" + } + ] + }, + { + text: "reth prune", + link: "/cli/reth/prune" + } + ] + } + ] + }, +] \ No newline at end of file diff --git a/book/vocs/tsconfig.json b/book/vocs/tsconfig.json new file mode 100644 index 0000000000..d2636aac47 --- /dev/null +++ b/book/vocs/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["**/*.ts", "**/*.tsx"] +} diff --git a/book/vocs/vocs.config.ts b/book/vocs/vocs.config.ts new file mode 100644 index 0000000000..7cb376d3cd --- /dev/null +++ b/book/vocs/vocs.config.ts @@ -0,0 +1,69 @@ +import { defineConfig } from 'vocs' +import { sidebar } from './sidebar' +import { basePath } from './redirects.config' + +export default defineConfig({ + title: 'Reth', + logoUrl: '/logo.png', + iconUrl: '/logo.png', + ogImageUrl: '/reth-prod.png', + sidebar, + basePath, + topNav: [ + { text: 'Run', link: '/run/ethereum' }, + { text: 'SDK', link: '/sdk/overview' }, + { text: 'GitHub', link: 'https://github.com/paradigmxyz/reth' }, + { + text: 'v1.4.8', + items: [ + { + text: 'Releases', + link: 'https://github.com/paradigmxyz/reth/releases' + }, + { + text: 'Contributing', + link: 'https://github.com/paradigmxyz/reth/blob/main/CONTRIBUTING.md' + } + ] + } + ], + socials: [ + { + icon: 'github', + link: 'https://github.com/paradigmxyz/reth', + }, + { + icon: 'telegram', + link: 'https://t.me/paradigm_reth', + }, + ], + sponsors: [ + { + name: 'Collaborators', + height: 120, + items: [ + [ + { + name: 'Paradigm', + link: 'https://paradigm.xyz', + image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/paradigm-light.svg', + }, + { + name: 'Ithaca', + link: 'https://ithaca.xyz', + image: 'https://raw.githubusercontent.com/wevm/.github/main/content/sponsors/ithaca-light.svg', + } + ] + ] + } + ], + theme: { + accentColor: { + light: '#1f1f1f', + dark: '#ffffff', + } + }, + editLink: { + pattern: "https://github.com/paradigmxyz/reth/edit/main/book/vocs/docs/pages/:path", + } +})

Reth mdbook has been migrated to new docs. If you are not redirected please click here.